Added some last finishing touches on Dimensional walls.

Added some last finishing touches on Dimensional walls.
This commit is contained in:
Waterpicker 2017-01-13 00:36:28 -06:00
parent e1facdbf3b
commit 8ef079b122
2 changed files with 39 additions and 14 deletions

View file

@ -8,6 +8,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
@ -19,6 +20,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.Explosion; import net.minecraft.world.Explosion;
@ -33,7 +35,7 @@ import javax.annotation.Nullable;
public class BlockDimWall extends Block { public class BlockDimWall extends Block {
public static final String ID = "blockDimWall"; public static final String ID = "blockDimWall";
public static final PropertyInteger TYPE = PropertyInteger.create("type", 0, 2); public static final PropertyEnum<BlockDimWall.EnumType> TYPE = PropertyEnum.<BlockDimWall.EnumType>create("type", BlockDimWall.EnumType.class);
private static final float SUPER_HIGH_HARDNESS = 10000000000000F; private static final float SUPER_HIGH_HARDNESS = 10000000000000F;
private static final float SUPER_EXPLOSION_RESISTANCE = 18000000F; private static final float SUPER_EXPLOSION_RESISTANCE = 18000000F;
@ -45,14 +47,14 @@ public class BlockDimWall extends Block {
setHardness(0.1F); setHardness(0.1F);
setUnlocalizedName(ID); setUnlocalizedName(ID);
setRegistryName(ID); setRegistryName(ID);
setDefaultState(blockState.getBaseState().withProperty(TYPE, 0)); setDefaultState(blockState.getBaseState().withProperty(TYPE, EnumType.FABRIC));
setSoundType(SoundType.STONE); setSoundType(SoundType.STONE);
} }
@Override @Override
public IBlockState getStateFromMeta(int meta) { public IBlockState getStateFromMeta(int meta) {
if (meta >= 0 && meta <= 2) { if (meta >= 0 && meta <= 2) {
return getDefaultState().withProperty(TYPE, meta); return getDefaultState().withProperty(TYPE, EnumType.values()[meta]);
} else { } else {
return getDefaultState(); return getDefaultState();
} }
@ -60,7 +62,7 @@ public class BlockDimWall extends Block {
@Override @Override
public int getMetaFromState(IBlockState state) { public int getMetaFromState(IBlockState state) {
return state.getValue(TYPE); return state.getValue(TYPE).ordinal();
} }
@Override @Override
@ -70,7 +72,7 @@ public class BlockDimWall extends Block {
@Override @Override
public float getBlockHardness(IBlockState state, World world, BlockPos pos) { public float getBlockHardness(IBlockState state, World world, BlockPos pos) {
if (state.getValue(TYPE) != 1) { if (!state.getValue(TYPE).equals(EnumType.ANCIENT)) {
return this.blockHardness; return this.blockHardness;
} else { } else {
return SUPER_HIGH_HARDNESS; return SUPER_HIGH_HARDNESS;
@ -79,7 +81,7 @@ public class BlockDimWall extends Block {
@Override @Override
public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion) { public float getExplosionResistance(World world, BlockPos pos, Entity exploder, Explosion explosion) {
if (world.getBlockState(pos).getValue(TYPE) != 1) { if (!world.getBlockState(pos).getValue(TYPE).equals(EnumType.ANCIENT)) {
return super.getExplosionResistance(world, pos, exploder, explosion); return super.getExplosionResistance(world, pos, exploder, explosion);
} else { } else {
return SUPER_EXPLOSION_RESISTANCE; return SUPER_EXPLOSION_RESISTANCE;
@ -88,7 +90,7 @@ public class BlockDimWall extends Block {
@Override @Override
public int damageDropped(IBlockState state) { public int damageDropped(IBlockState state) {
int metadata = state.getValue(TYPE); int metadata = state.getValue(TYPE).ordinal();
//Return 0 to avoid dropping Ancient Fabric even if the player somehow manages to break it //Return 0 to avoid dropping Ancient Fabric even if the player somehow manages to break it
return metadata == 1 ? 0 : metadata; return metadata == 1 ? 0 : metadata;
} }
@ -123,7 +125,7 @@ public class BlockDimWall extends Block {
@Override @Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) {
//Check if the metadata value is 0 -- we don't want the user to replace Ancient Fabric //Check if the metadata value is 0 -- we don't want the user to replace Ancient Fabric
if (heldItem != null && state.getValue(TYPE) != 1) { if (heldItem != null && !state.getValue(TYPE).equals(EnumType.ANCIENT)) {
Block block = Block.getBlockFromItem(heldItem.getItem()); Block block = Block.getBlockFromItem(heldItem.getItem());
if (!state.isNormalCube() || block.hasTileEntity(block.getDefaultState()) if (!state.isNormalCube() || block.hasTileEntity(block.getDefaultState())
|| block == this //this also keeps it from being replaced by Ancient Fabric || block == this //this also keeps it from being replaced by Ancient Fabric
@ -134,11 +136,34 @@ public class BlockDimWall extends Block {
if (!player.capabilities.isCreativeMode) { if (!player.capabilities.isCreativeMode) {
heldItem.stackSize--; heldItem.stackSize--;
} }
world.setBlockState(pos, block.getStateForPlacement( world.setBlockState(pos, block.getStateForPlacement(world, pos, side, hitX, hitY, hitZ, 0, player, heldItem)); //choosing getStateForPlacement over getDefaultState, because it will cause directional blocks, like logs to rotate correctly
world, pos, side, hitX, hitY, hitZ, 0, player, heldItem)); //choosing getStateForPlacement over getDefaultState, because it will cause directional blocks, like logs to rotate correctly heldItem.onItemUse(player, world, pos, hand, side, hitX, hitY, hitZ);
} }
return true; return true;
} }
return false; return false;
} }
public static enum EnumType implements IStringSerializable {
FABRIC("fabric"),
ANCIENT("ancient"),
ALTERED("altered");
private final String name;
private EnumType(String name)
{
this.name = name;
}
public String toString()
{
return this.name;
}
public String getName()
{
return this.name;
}
}
} }

View file

@ -1,7 +1,7 @@
{ {
"variants": { "variants": {
"type=0": { "model": "dimdoors:blockDimWall" }, "type=fabric": { "model": "dimdoors:blockDimWall" },
"type=1": { "model": "dimdoors:blockDimWallAncient" }, "type=ancient": { "model": "dimdoors:blockDimWallAncient" },
"type=2": { "model": "dimdoors:blockDimWallAltered" } "type=altered": { "model": "dimdoors:blockDimWallAltered" }
} }
} }