package net.minecraft.block; import java.util.Arrays; import java.util.List; import java.util.Random; import net.minecraft.block.material.MapColor; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.util.IStringSerializable; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class BlockStairs extends Block { public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL); public static final PropertyEnum HALF = PropertyEnum.create("half", BlockStairs.EnumHalf.class); public static final PropertyEnum SHAPE = PropertyEnum.create("shape", BlockStairs.EnumShape.class); private static final int[][] field_150150_a = new int[][] {{4, 5}, {5, 7}, {6, 7}, {4, 6}, {0, 1}, {1, 3}, {2, 3}, {0, 2}}; private final Block modelBlock; private final IBlockState modelState; private boolean field_150152_N; private int field_150153_O; private static final String __OBFID = "CL_00000314"; protected BlockStairs(IBlockState modelState) { super(modelState.getBlock().blockMaterial); this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(HALF, BlockStairs.EnumHalf.BOTTOM).withProperty(SHAPE, BlockStairs.EnumShape.STRAIGHT)); this.modelBlock = modelState.getBlock(); this.modelState = modelState; this.setHardness(this.modelBlock.blockHardness); this.setResistance(this.modelBlock.blockResistance / 3.0F); this.setStepSound(this.modelBlock.stepSound); this.setLightOpacity(255); this.setCreativeTab(CreativeTabs.tabBlock); } public void setBlockBoundsBasedOnState(IBlockAccess access, BlockPos pos) { if (this.field_150152_N) { this.setBlockBounds(0.5F * (float)(this.field_150153_O % 2), 0.5F * (float)(this.field_150153_O / 4 % 2), 0.5F * (float)(this.field_150153_O / 2 % 2), 0.5F + 0.5F * (float)(this.field_150153_O % 2), 0.5F + 0.5F * (float)(this.field_150153_O / 4 % 2), 0.5F + 0.5F * (float)(this.field_150153_O / 2 % 2)); } else { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } } public boolean isOpaqueCube() { return false; } public boolean isFullCube() { return false; } /** * Set the block bounds as the collision bounds for the stairs at the given position */ public void setBaseCollisionBounds(IBlockAccess worldIn, BlockPos pos) { if (worldIn.getBlockState(pos).getValue(HALF) == BlockStairs.EnumHalf.TOP) { this.setBlockBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F); } else { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } } /** * Checks if a block is stairs */ public static boolean isBlockStairs(Block p_150148_0_) { return p_150148_0_ instanceof BlockStairs; } /** * Check whether there is a stair block at the given position and it has the same properties as the given BlockState */ public static boolean isSameStair(IBlockAccess worldIn, BlockPos pos, IBlockState state) { IBlockState var3 = worldIn.getBlockState(pos); Block var4 = var3.getBlock(); return isBlockStairs(var4) && var3.getValue(HALF) == state.getValue(HALF) && var3.getValue(FACING) == state.getValue(FACING); } public int func_176307_f(IBlockAccess p_176307_1_, BlockPos p_176307_2_) { IBlockState var3 = p_176307_1_.getBlockState(p_176307_2_); EnumFacing var4 = (EnumFacing)var3.getValue(FACING); BlockStairs.EnumHalf var5 = (BlockStairs.EnumHalf)var3.getValue(HALF); boolean var6 = var5 == BlockStairs.EnumHalf.TOP; IBlockState var7; Block var8; EnumFacing var9; if (var4 == EnumFacing.EAST) { var7 = p_176307_1_.getBlockState(p_176307_2_.offsetEast()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.NORTH && !isSameStair(p_176307_1_, p_176307_2_.offsetSouth(), var3)) { return var6 ? 1 : 2; } if (var9 == EnumFacing.SOUTH && !isSameStair(p_176307_1_, p_176307_2_.offsetNorth(), var3)) { return var6 ? 2 : 1; } } } else if (var4 == EnumFacing.WEST) { var7 = p_176307_1_.getBlockState(p_176307_2_.offsetWest()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.NORTH && !isSameStair(p_176307_1_, p_176307_2_.offsetSouth(), var3)) { return var6 ? 2 : 1; } if (var9 == EnumFacing.SOUTH && !isSameStair(p_176307_1_, p_176307_2_.offsetNorth(), var3)) { return var6 ? 1 : 2; } } } else if (var4 == EnumFacing.SOUTH) { var7 = p_176307_1_.getBlockState(p_176307_2_.offsetSouth()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.WEST && !isSameStair(p_176307_1_, p_176307_2_.offsetEast(), var3)) { return var6 ? 2 : 1; } if (var9 == EnumFacing.EAST && !isSameStair(p_176307_1_, p_176307_2_.offsetWest(), var3)) { return var6 ? 1 : 2; } } } else if (var4 == EnumFacing.NORTH) { var7 = p_176307_1_.getBlockState(p_176307_2_.offsetNorth()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.WEST && !isSameStair(p_176307_1_, p_176307_2_.offsetEast(), var3)) { return var6 ? 1 : 2; } if (var9 == EnumFacing.EAST && !isSameStair(p_176307_1_, p_176307_2_.offsetWest(), var3)) { return var6 ? 2 : 1; } } } return 0; } public int func_176305_g(IBlockAccess p_176305_1_, BlockPos p_176305_2_) { IBlockState var3 = p_176305_1_.getBlockState(p_176305_2_); EnumFacing var4 = (EnumFacing)var3.getValue(FACING); BlockStairs.EnumHalf var5 = (BlockStairs.EnumHalf)var3.getValue(HALF); boolean var6 = var5 == BlockStairs.EnumHalf.TOP; IBlockState var7; Block var8; EnumFacing var9; if (var4 == EnumFacing.EAST) { var7 = p_176305_1_.getBlockState(p_176305_2_.offsetWest()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.NORTH && !isSameStair(p_176305_1_, p_176305_2_.offsetNorth(), var3)) { return var6 ? 1 : 2; } if (var9 == EnumFacing.SOUTH && !isSameStair(p_176305_1_, p_176305_2_.offsetSouth(), var3)) { return var6 ? 2 : 1; } } } else if (var4 == EnumFacing.WEST) { var7 = p_176305_1_.getBlockState(p_176305_2_.offsetEast()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.NORTH && !isSameStair(p_176305_1_, p_176305_2_.offsetNorth(), var3)) { return var6 ? 2 : 1; } if (var9 == EnumFacing.SOUTH && !isSameStair(p_176305_1_, p_176305_2_.offsetSouth(), var3)) { return var6 ? 1 : 2; } } } else if (var4 == EnumFacing.SOUTH) { var7 = p_176305_1_.getBlockState(p_176305_2_.offsetNorth()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.WEST && !isSameStair(p_176305_1_, p_176305_2_.offsetWest(), var3)) { return var6 ? 2 : 1; } if (var9 == EnumFacing.EAST && !isSameStair(p_176305_1_, p_176305_2_.offsetEast(), var3)) { return var6 ? 1 : 2; } } } else if (var4 == EnumFacing.NORTH) { var7 = p_176305_1_.getBlockState(p_176305_2_.offsetSouth()); var8 = var7.getBlock(); if (isBlockStairs(var8) && var5 == var7.getValue(HALF)) { var9 = (EnumFacing)var7.getValue(FACING); if (var9 == EnumFacing.WEST && !isSameStair(p_176305_1_, p_176305_2_.offsetWest(), var3)) { return var6 ? 1 : 2; } if (var9 == EnumFacing.EAST && !isSameStair(p_176305_1_, p_176305_2_.offsetEast(), var3)) { return var6 ? 2 : 1; } } } return 0; } public boolean func_176306_h(IBlockAccess p_176306_1_, BlockPos p_176306_2_) { IBlockState var3 = p_176306_1_.getBlockState(p_176306_2_); EnumFacing var4 = (EnumFacing)var3.getValue(FACING); BlockStairs.EnumHalf var5 = (BlockStairs.EnumHalf)var3.getValue(HALF); boolean var6 = var5 == BlockStairs.EnumHalf.TOP; float var7 = 0.5F; float var8 = 1.0F; if (var6) { var7 = 0.0F; var8 = 0.5F; } float var9 = 0.0F; float var10 = 1.0F; float var11 = 0.0F; float var12 = 0.5F; boolean var13 = true; IBlockState var14; Block var15; EnumFacing var16; if (var4 == EnumFacing.EAST) { var9 = 0.5F; var12 = 1.0F; var14 = p_176306_1_.getBlockState(p_176306_2_.offsetEast()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.NORTH && !isSameStair(p_176306_1_, p_176306_2_.offsetSouth(), var3)) { var12 = 0.5F; var13 = false; } else if (var16 == EnumFacing.SOUTH && !isSameStair(p_176306_1_, p_176306_2_.offsetNorth(), var3)) { var11 = 0.5F; var13 = false; } } } else if (var4 == EnumFacing.WEST) { var10 = 0.5F; var12 = 1.0F; var14 = p_176306_1_.getBlockState(p_176306_2_.offsetWest()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.NORTH && !isSameStair(p_176306_1_, p_176306_2_.offsetSouth(), var3)) { var12 = 0.5F; var13 = false; } else if (var16 == EnumFacing.SOUTH && !isSameStair(p_176306_1_, p_176306_2_.offsetNorth(), var3)) { var11 = 0.5F; var13 = false; } } } else if (var4 == EnumFacing.SOUTH) { var11 = 0.5F; var12 = 1.0F; var14 = p_176306_1_.getBlockState(p_176306_2_.offsetSouth()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.WEST && !isSameStair(p_176306_1_, p_176306_2_.offsetEast(), var3)) { var10 = 0.5F; var13 = false; } else if (var16 == EnumFacing.EAST && !isSameStair(p_176306_1_, p_176306_2_.offsetWest(), var3)) { var9 = 0.5F; var13 = false; } } } else if (var4 == EnumFacing.NORTH) { var14 = p_176306_1_.getBlockState(p_176306_2_.offsetNorth()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.WEST && !isSameStair(p_176306_1_, p_176306_2_.offsetEast(), var3)) { var10 = 0.5F; var13 = false; } else if (var16 == EnumFacing.EAST && !isSameStair(p_176306_1_, p_176306_2_.offsetWest(), var3)) { var9 = 0.5F; var13 = false; } } } this.setBlockBounds(var9, var7, var11, var10, var8, var12); return var13; } public boolean func_176304_i(IBlockAccess p_176304_1_, BlockPos p_176304_2_) { IBlockState var3 = p_176304_1_.getBlockState(p_176304_2_); EnumFacing var4 = (EnumFacing)var3.getValue(FACING); BlockStairs.EnumHalf var5 = (BlockStairs.EnumHalf)var3.getValue(HALF); boolean var6 = var5 == BlockStairs.EnumHalf.TOP; float var7 = 0.5F; float var8 = 1.0F; if (var6) { var7 = 0.0F; var8 = 0.5F; } float var9 = 0.0F; float var10 = 0.5F; float var11 = 0.5F; float var12 = 1.0F; boolean var13 = false; IBlockState var14; Block var15; EnumFacing var16; if (var4 == EnumFacing.EAST) { var14 = p_176304_1_.getBlockState(p_176304_2_.offsetWest()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.NORTH && !isSameStair(p_176304_1_, p_176304_2_.offsetNorth(), var3)) { var11 = 0.0F; var12 = 0.5F; var13 = true; } else if (var16 == EnumFacing.SOUTH && !isSameStair(p_176304_1_, p_176304_2_.offsetSouth(), var3)) { var11 = 0.5F; var12 = 1.0F; var13 = true; } } } else if (var4 == EnumFacing.WEST) { var14 = p_176304_1_.getBlockState(p_176304_2_.offsetEast()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var9 = 0.5F; var10 = 1.0F; var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.NORTH && !isSameStair(p_176304_1_, p_176304_2_.offsetNorth(), var3)) { var11 = 0.0F; var12 = 0.5F; var13 = true; } else if (var16 == EnumFacing.SOUTH && !isSameStair(p_176304_1_, p_176304_2_.offsetSouth(), var3)) { var11 = 0.5F; var12 = 1.0F; var13 = true; } } } else if (var4 == EnumFacing.SOUTH) { var14 = p_176304_1_.getBlockState(p_176304_2_.offsetNorth()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var11 = 0.0F; var12 = 0.5F; var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.WEST && !isSameStair(p_176304_1_, p_176304_2_.offsetWest(), var3)) { var13 = true; } else if (var16 == EnumFacing.EAST && !isSameStair(p_176304_1_, p_176304_2_.offsetEast(), var3)) { var9 = 0.5F; var10 = 1.0F; var13 = true; } } } else if (var4 == EnumFacing.NORTH) { var14 = p_176304_1_.getBlockState(p_176304_2_.offsetSouth()); var15 = var14.getBlock(); if (isBlockStairs(var15) && var5 == var14.getValue(HALF)) { var16 = (EnumFacing)var14.getValue(FACING); if (var16 == EnumFacing.WEST && !isSameStair(p_176304_1_, p_176304_2_.offsetWest(), var3)) { var13 = true; } else if (var16 == EnumFacing.EAST && !isSameStair(p_176304_1_, p_176304_2_.offsetEast(), var3)) { var9 = 0.5F; var10 = 1.0F; var13 = true; } } } if (var13) { this.setBlockBounds(var9, var7, var11, var10, var8, var12); } return var13; } /** * Add all collision boxes of this Block to the list that intersect with the given mask. * * @param collidingEntity the Entity colliding with this Block */ public void addCollisionBoxesToList(World worldIn, BlockPos pos, IBlockState state, AxisAlignedBB mask, List list, Entity collidingEntity) { this.setBaseCollisionBounds(worldIn, pos); super.addCollisionBoxesToList(worldIn, pos, state, mask, list, collidingEntity); boolean var7 = this.func_176306_h(worldIn, pos); super.addCollisionBoxesToList(worldIn, pos, state, mask, list, collidingEntity); if (var7 && this.func_176304_i(worldIn, pos)) { super.addCollisionBoxesToList(worldIn, pos, state, mask, list, collidingEntity); } this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } public void onBlockClicked(World worldIn, BlockPos pos, EntityPlayer playerIn) { this.modelBlock.onBlockClicked(worldIn, pos, playerIn); } /** * Called when a player destroys this Block */ public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { this.modelBlock.onBlockDestroyedByPlayer(worldIn, pos, state); } /** * Returns how much this block can resist explosions from the passed in entity. */ public float getExplosionResistance(Entity exploder) { return this.modelBlock.getExplosionResistance(exploder); } /** * How many world ticks before ticking */ public int tickRate(World worldIn) { return this.modelBlock.tickRate(worldIn); } public Vec3 modifyAcceleration(World worldIn, BlockPos pos, Entity entityIn, Vec3 motion) { return this.modelBlock.modifyAcceleration(worldIn, pos, entityIn, motion); } /** * Returns if this block is collidable (only used by Fire). Args: x, y, z */ public boolean isCollidable() { return this.modelBlock.isCollidable(); } public boolean canCollideCheck(IBlockState state, boolean p_176209_2_) { return this.modelBlock.canCollideCheck(state, p_176209_2_); } public boolean canPlaceBlockAt(World worldIn, BlockPos pos) { return this.modelBlock.canPlaceBlockAt(worldIn, pos); } public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) { this.onNeighborBlockChange(worldIn, pos, this.modelState, Blocks.air); this.modelBlock.onBlockAdded(worldIn, pos, this.modelState); } public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { this.modelBlock.breakBlock(worldIn, pos, this.modelState); } /** * Triggered whenever an entity collides with this block (enters into the block) */ public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, Entity entityIn) { this.modelBlock.onEntityCollidedWithBlock(worldIn, pos, entityIn); } public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) { this.modelBlock.updateTick(worldIn, pos, state, rand); } public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ) { return this.modelBlock.onBlockActivated(worldIn, pos, this.modelState, playerIn, EnumFacing.DOWN, 0.0F, 0.0F, 0.0F); } /** * Called when this Block is destroyed by an Explosion */ public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) { this.modelBlock.onBlockDestroyedByExplosion(worldIn, pos, explosionIn); } /** * Get the MapColor for this Block and the given BlockState */ public MapColor getMapColor(IBlockState state) { return this.modelBlock.getMapColor(this.modelState); } public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { IBlockState var9 = super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer); var9 = var9.withProperty(FACING, placer.func_174811_aO()).withProperty(SHAPE, BlockStairs.EnumShape.STRAIGHT); return facing != EnumFacing.DOWN && (facing == EnumFacing.UP || (double)hitY <= 0.5D) ? var9.withProperty(HALF, BlockStairs.EnumHalf.BOTTOM) : var9.withProperty(HALF, BlockStairs.EnumHalf.TOP); } /** * Ray traces through the blocks collision from start vector to end vector returning a ray trace hit. * * @param start The start vector * @param end The end vector */ public MovingObjectPosition collisionRayTrace(World worldIn, BlockPos pos, Vec3 start, Vec3 end) { MovingObjectPosition[] var5 = new MovingObjectPosition[8]; IBlockState var6 = worldIn.getBlockState(pos); int var7 = ((EnumFacing)var6.getValue(FACING)).getHorizontalIndex(); boolean var8 = var6.getValue(HALF) == BlockStairs.EnumHalf.TOP; int[] var9 = field_150150_a[var7 + (var8 ? 4 : 0)]; this.field_150152_N = true; for (int var10 = 0; var10 < 8; ++var10) { this.field_150153_O = var10; if (Arrays.binarySearch(var9, var10) < 0) { var5[var10] = super.collisionRayTrace(worldIn, pos, start, end); } } int[] var19 = var9; int var11 = var9.length; for (int var12 = 0; var12 < var11; ++var12) { int var13 = var19[var12]; var5[var13] = null; } MovingObjectPosition var20 = null; double var21 = 0.0D; MovingObjectPosition[] var22 = var5; int var14 = var5.length; for (int var15 = 0; var15 < var14; ++var15) { MovingObjectPosition var16 = var22[var15]; if (var16 != null) { double var17 = var16.hitVec.squareDistanceTo(end); if (var17 > var21) { var20 = var16; var21 = var17; } } } return var20; } /** * Convert the given metadata into a BlockState for this Block */ public IBlockState getStateFromMeta(int meta) { IBlockState var2 = this.getDefaultState().withProperty(HALF, (meta & 4) > 0 ? BlockStairs.EnumHalf.TOP : BlockStairs.EnumHalf.BOTTOM); var2 = var2.withProperty(FACING, EnumFacing.getFront(5 - (meta & 3))); return var2; } /** * Convert the BlockState into the correct metadata value */ public int getMetaFromState(IBlockState state) { int var2 = 0; if (state.getValue(HALF) == BlockStairs.EnumHalf.TOP) { var2 |= 4; } var2 |= 5 - ((EnumFacing)state.getValue(FACING)).getIndex(); return var2; } /** * Get the actual Block state of this Block at the given position. This applies properties not visible in the * metadata, such as fence connections. */ public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) { if (this.func_176306_h(worldIn, pos)) { switch (this.func_176305_g(worldIn, pos)) { case 0: state = state.withProperty(SHAPE, BlockStairs.EnumShape.STRAIGHT); break; case 1: state = state.withProperty(SHAPE, BlockStairs.EnumShape.INNER_RIGHT); break; case 2: state = state.withProperty(SHAPE, BlockStairs.EnumShape.INNER_LEFT); } } else { switch (this.func_176307_f(worldIn, pos)) { case 0: state = state.withProperty(SHAPE, BlockStairs.EnumShape.STRAIGHT); break; case 1: state = state.withProperty(SHAPE, BlockStairs.EnumShape.OUTER_RIGHT); break; case 2: state = state.withProperty(SHAPE, BlockStairs.EnumShape.OUTER_LEFT); } } return state; } protected BlockState createBlockState() { return new BlockState(this, new IProperty[] {FACING, HALF, SHAPE}); } public static enum EnumHalf implements IStringSerializable { TOP("TOP", 0, "top"), BOTTOM("BOTTOM", 1, "bottom"); private final String field_176709_c; private static final BlockStairs.EnumHalf[] $VALUES = new BlockStairs.EnumHalf[]{TOP, BOTTOM}; private static final String __OBFID = "CL_00002062"; private EnumHalf(String p_i45683_1_, int p_i45683_2_, String p_i45683_3_) { this.field_176709_c = p_i45683_3_; } public String toString() { return this.field_176709_c; } public String getName() { return this.field_176709_c; } } public static enum EnumShape implements IStringSerializable { STRAIGHT("STRAIGHT", 0, "straight"), INNER_LEFT("INNER_LEFT", 1, "inner_left"), INNER_RIGHT("INNER_RIGHT", 2, "inner_right"), OUTER_LEFT("OUTER_LEFT", 3, "outer_left"), OUTER_RIGHT("OUTER_RIGHT", 4, "outer_right"); private final String field_176699_f; private static final BlockStairs.EnumShape[] $VALUES = new BlockStairs.EnumShape[]{STRAIGHT, INNER_LEFT, INNER_RIGHT, OUTER_LEFT, OUTER_RIGHT}; private static final String __OBFID = "CL_00002061"; private EnumShape(String p_i45682_1_, int p_i45682_2_, String p_i45682_3_) { this.field_176699_f = p_i45682_3_; } public String toString() { return this.field_176699_f; } public String getName() { return this.field_176699_f; } } }