package net.minecraft.world.gen.structure; import java.util.Iterator; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockDirectional; import net.minecraft.block.BlockDoor; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.item.ItemDoor; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityChest; import net.minecraft.tileentity.TileEntityDispenser; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; public abstract class StructureComponent { protected StructureBoundingBox boundingBox; /** switches the Coordinate System base off the Bounding Box */ protected EnumFacing coordBaseMode; /** The type ID of this component. */ protected int componentType; private static final String __OBFID = "CL_00000511"; public StructureComponent() {} protected StructureComponent(int p_i2091_1_) { this.componentType = p_i2091_1_; } public NBTTagCompound func_143010_b() { NBTTagCompound var1 = new NBTTagCompound(); var1.setString("id", MapGenStructureIO.func_143036_a(this)); var1.setTag("BB", this.boundingBox.func_151535_h()); var1.setInteger("O", this.coordBaseMode == null ? -1 : this.coordBaseMode.getHorizontalIndex()); var1.setInteger("GD", this.componentType); this.writeStructureToNBT(var1); return var1; } /** * (abstract) Helper method to write subclass data to NBT */ protected abstract void writeStructureToNBT(NBTTagCompound p_143012_1_); public void func_143009_a(World worldIn, NBTTagCompound p_143009_2_) { if (p_143009_2_.hasKey("BB")) { this.boundingBox = new StructureBoundingBox(p_143009_2_.getIntArray("BB")); } int var3 = p_143009_2_.getInteger("O"); this.coordBaseMode = var3 == -1 ? null : EnumFacing.getHorizontal(var3); this.componentType = p_143009_2_.getInteger("GD"); this.readStructureFromNBT(p_143009_2_); } /** * (abstract) Helper method to read subclass data from NBT */ protected abstract void readStructureFromNBT(NBTTagCompound p_143011_1_); /** * Initiates construction of the Structure Component picked, at the current Location of StructGen */ public void buildComponent(StructureComponent p_74861_1_, List p_74861_2_, Random p_74861_3_) {} /** * second Part of Structure generating, this for example places Spiderwebs, Mob Spawners, it closes Mineshafts at * the end, it adds Fences... */ public abstract boolean addComponentParts(World worldIn, Random p_74875_2_, StructureBoundingBox p_74875_3_); public StructureBoundingBox getBoundingBox() { return this.boundingBox; } /** * Returns the component type ID of this component. */ public int getComponentType() { return this.componentType; } /** * Discover if bounding box can fit within the current bounding box object. */ public static StructureComponent findIntersecting(List p_74883_0_, StructureBoundingBox p_74883_1_) { Iterator var2 = p_74883_0_.iterator(); StructureComponent var3; do { if (!var2.hasNext()) { return null; } var3 = (StructureComponent)var2.next(); } while (var3.getBoundingBox() == null || !var3.getBoundingBox().intersectsWith(p_74883_1_)); return var3; } public BlockPos func_180776_a() { return new BlockPos(this.boundingBox.func_180717_f()); } /** * checks the entire StructureBoundingBox for Liquids */ protected boolean isLiquidInStructureBoundingBox(World worldIn, StructureBoundingBox p_74860_2_) { int var3 = Math.max(this.boundingBox.minX - 1, p_74860_2_.minX); int var4 = Math.max(this.boundingBox.minY - 1, p_74860_2_.minY); int var5 = Math.max(this.boundingBox.minZ - 1, p_74860_2_.minZ); int var6 = Math.min(this.boundingBox.maxX + 1, p_74860_2_.maxX); int var7 = Math.min(this.boundingBox.maxY + 1, p_74860_2_.maxY); int var8 = Math.min(this.boundingBox.maxZ + 1, p_74860_2_.maxZ); int var9; int var10; for (var9 = var3; var9 <= var6; ++var9) { for (var10 = var5; var10 <= var8; ++var10) { if (worldIn.getBlockState(new BlockPos(var9, var4, var10)).getBlock().getMaterial().isLiquid()) { return true; } if (worldIn.getBlockState(new BlockPos(var9, var7, var10)).getBlock().getMaterial().isLiquid()) { return true; } } } for (var9 = var3; var9 <= var6; ++var9) { for (var10 = var4; var10 <= var7; ++var10) { if (worldIn.getBlockState(new BlockPos(var9, var10, var5)).getBlock().getMaterial().isLiquid()) { return true; } if (worldIn.getBlockState(new BlockPos(var9, var10, var8)).getBlock().getMaterial().isLiquid()) { return true; } } } for (var9 = var5; var9 <= var8; ++var9) { for (var10 = var4; var10 <= var7; ++var10) { if (worldIn.getBlockState(new BlockPos(var3, var10, var9)).getBlock().getMaterial().isLiquid()) { return true; } if (worldIn.getBlockState(new BlockPos(var6, var10, var9)).getBlock().getMaterial().isLiquid()) { return true; } } } return false; } protected int getXWithOffset(int p_74865_1_, int p_74865_2_) { if (this.coordBaseMode == null) { return p_74865_1_; } else { switch (StructureComponent.SwitchEnumFacing.field_176100_a[this.coordBaseMode.ordinal()]) { case 1: case 2: return this.boundingBox.minX + p_74865_1_; case 3: return this.boundingBox.maxX - p_74865_2_; case 4: return this.boundingBox.minX + p_74865_2_; default: return p_74865_1_; } } } protected int getYWithOffset(int p_74862_1_) { return this.coordBaseMode == null ? p_74862_1_ : p_74862_1_ + this.boundingBox.minY; } protected int getZWithOffset(int p_74873_1_, int p_74873_2_) { if (this.coordBaseMode == null) { return p_74873_2_; } else { switch (StructureComponent.SwitchEnumFacing.field_176100_a[this.coordBaseMode.ordinal()]) { case 1: return this.boundingBox.maxZ - p_74873_2_; case 2: return this.boundingBox.minZ + p_74873_2_; case 3: case 4: return this.boundingBox.minZ + p_74873_1_; default: return p_74873_2_; } } } /** * Returns the direction-shifted metadata for blocks that require orientation, e.g. doors, stairs, ladders. */ protected int getMetadataWithOffset(Block p_151555_1_, int p_151555_2_) { if (p_151555_1_ == Blocks.rail) { if (this.coordBaseMode == EnumFacing.WEST || this.coordBaseMode == EnumFacing.EAST) { if (p_151555_2_ == 1) { return 0; } return 1; } } else if (p_151555_1_ instanceof BlockDoor) { if (this.coordBaseMode == EnumFacing.SOUTH) { if (p_151555_2_ == 0) { return 2; } if (p_151555_2_ == 2) { return 0; } } else { if (this.coordBaseMode == EnumFacing.WEST) { return p_151555_2_ + 1 & 3; } if (this.coordBaseMode == EnumFacing.EAST) { return p_151555_2_ + 3 & 3; } } } else if (p_151555_1_ != Blocks.stone_stairs && p_151555_1_ != Blocks.oak_stairs && p_151555_1_ != Blocks.nether_brick_stairs && p_151555_1_ != Blocks.stone_brick_stairs && p_151555_1_ != Blocks.sandstone_stairs) { if (p_151555_1_ == Blocks.ladder) { if (this.coordBaseMode == EnumFacing.SOUTH) { if (p_151555_2_ == EnumFacing.NORTH.getIndex()) { return EnumFacing.SOUTH.getIndex(); } if (p_151555_2_ == EnumFacing.SOUTH.getIndex()) { return EnumFacing.NORTH.getIndex(); } } else if (this.coordBaseMode == EnumFacing.WEST) { if (p_151555_2_ == EnumFacing.NORTH.getIndex()) { return EnumFacing.WEST.getIndex(); } if (p_151555_2_ == EnumFacing.SOUTH.getIndex()) { return EnumFacing.EAST.getIndex(); } if (p_151555_2_ == EnumFacing.WEST.getIndex()) { return EnumFacing.NORTH.getIndex(); } if (p_151555_2_ == EnumFacing.EAST.getIndex()) { return EnumFacing.SOUTH.getIndex(); } } else if (this.coordBaseMode == EnumFacing.EAST) { if (p_151555_2_ == EnumFacing.NORTH.getIndex()) { return EnumFacing.EAST.getIndex(); } if (p_151555_2_ == EnumFacing.SOUTH.getIndex()) { return EnumFacing.WEST.getIndex(); } if (p_151555_2_ == EnumFacing.WEST.getIndex()) { return EnumFacing.NORTH.getIndex(); } if (p_151555_2_ == EnumFacing.EAST.getIndex()) { return EnumFacing.SOUTH.getIndex(); } } } else if (p_151555_1_ == Blocks.stone_button) { if (this.coordBaseMode == EnumFacing.SOUTH) { if (p_151555_2_ == 3) { return 4; } if (p_151555_2_ == 4) { return 3; } } else if (this.coordBaseMode == EnumFacing.WEST) { if (p_151555_2_ == 3) { return 1; } if (p_151555_2_ == 4) { return 2; } if (p_151555_2_ == 2) { return 3; } if (p_151555_2_ == 1) { return 4; } } else if (this.coordBaseMode == EnumFacing.EAST) { if (p_151555_2_ == 3) { return 2; } if (p_151555_2_ == 4) { return 1; } if (p_151555_2_ == 2) { return 3; } if (p_151555_2_ == 1) { return 4; } } } else if (p_151555_1_ != Blocks.tripwire_hook && !(p_151555_1_ instanceof BlockDirectional)) { if (p_151555_1_ == Blocks.piston || p_151555_1_ == Blocks.sticky_piston || p_151555_1_ == Blocks.lever || p_151555_1_ == Blocks.dispenser) { if (this.coordBaseMode == EnumFacing.SOUTH) { if (p_151555_2_ == EnumFacing.NORTH.getIndex() || p_151555_2_ == EnumFacing.SOUTH.getIndex()) { return EnumFacing.getFront(p_151555_2_).getOpposite().getIndex(); } } else if (this.coordBaseMode == EnumFacing.WEST) { if (p_151555_2_ == EnumFacing.NORTH.getIndex()) { return EnumFacing.WEST.getIndex(); } if (p_151555_2_ == EnumFacing.SOUTH.getIndex()) { return EnumFacing.EAST.getIndex(); } if (p_151555_2_ == EnumFacing.WEST.getIndex()) { return EnumFacing.NORTH.getIndex(); } if (p_151555_2_ == EnumFacing.EAST.getIndex()) { return EnumFacing.SOUTH.getIndex(); } } else if (this.coordBaseMode == EnumFacing.EAST) { if (p_151555_2_ == EnumFacing.NORTH.getIndex()) { return EnumFacing.EAST.getIndex(); } if (p_151555_2_ == EnumFacing.SOUTH.getIndex()) { return EnumFacing.WEST.getIndex(); } if (p_151555_2_ == EnumFacing.WEST.getIndex()) { return EnumFacing.NORTH.getIndex(); } if (p_151555_2_ == EnumFacing.EAST.getIndex()) { return EnumFacing.SOUTH.getIndex(); } } } } else { EnumFacing var3 = EnumFacing.getHorizontal(p_151555_2_); if (this.coordBaseMode == EnumFacing.SOUTH) { if (var3 == EnumFacing.SOUTH || var3 == EnumFacing.NORTH) { return var3.getOpposite().getHorizontalIndex(); } } else if (this.coordBaseMode == EnumFacing.WEST) { if (var3 == EnumFacing.NORTH) { return EnumFacing.WEST.getHorizontalIndex(); } if (var3 == EnumFacing.SOUTH) { return EnumFacing.EAST.getHorizontalIndex(); } if (var3 == EnumFacing.WEST) { return EnumFacing.NORTH.getHorizontalIndex(); } if (var3 == EnumFacing.EAST) { return EnumFacing.SOUTH.getHorizontalIndex(); } } else if (this.coordBaseMode == EnumFacing.EAST) { if (var3 == EnumFacing.NORTH) { return EnumFacing.EAST.getHorizontalIndex(); } if (var3 == EnumFacing.SOUTH) { return EnumFacing.WEST.getHorizontalIndex(); } if (var3 == EnumFacing.WEST) { return EnumFacing.NORTH.getHorizontalIndex(); } if (var3 == EnumFacing.EAST) { return EnumFacing.SOUTH.getHorizontalIndex(); } } } } else if (this.coordBaseMode == EnumFacing.SOUTH) { if (p_151555_2_ == 2) { return 3; } if (p_151555_2_ == 3) { return 2; } } else if (this.coordBaseMode == EnumFacing.WEST) { if (p_151555_2_ == 0) { return 2; } if (p_151555_2_ == 1) { return 3; } if (p_151555_2_ == 2) { return 0; } if (p_151555_2_ == 3) { return 1; } } else if (this.coordBaseMode == EnumFacing.EAST) { if (p_151555_2_ == 0) { return 2; } if (p_151555_2_ == 1) { return 3; } if (p_151555_2_ == 2) { return 1; } if (p_151555_2_ == 3) { return 0; } } return p_151555_2_; } protected void func_175811_a(World worldIn, IBlockState p_175811_2_, int p_175811_3_, int p_175811_4_, int p_175811_5_, StructureBoundingBox p_175811_6_) { BlockPos var7 = new BlockPos(this.getXWithOffset(p_175811_3_, p_175811_5_), this.getYWithOffset(p_175811_4_), this.getZWithOffset(p_175811_3_, p_175811_5_)); if (p_175811_6_.func_175898_b(var7)) { worldIn.setBlockState(var7, p_175811_2_, 2); } } protected IBlockState func_175807_a(World worldIn, int p_175807_2_, int p_175807_3_, int p_175807_4_, StructureBoundingBox p_175807_5_) { int var6 = this.getXWithOffset(p_175807_2_, p_175807_4_); int var7 = this.getYWithOffset(p_175807_3_); int var8 = this.getZWithOffset(p_175807_2_, p_175807_4_); return !p_175807_5_.func_175898_b(new BlockPos(var6, var7, var8)) ? Blocks.air.getDefaultState() : worldIn.getBlockState(new BlockPos(var6, var7, var8)); } /** * arguments: (World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int * maxZ) */ protected void fillWithAir(World worldIn, StructureBoundingBox p_74878_2_, int p_74878_3_, int p_74878_4_, int p_74878_5_, int p_74878_6_, int p_74878_7_, int p_74878_8_) { for (int var9 = p_74878_4_; var9 <= p_74878_7_; ++var9) { for (int var10 = p_74878_3_; var10 <= p_74878_6_; ++var10) { for (int var11 = p_74878_5_; var11 <= p_74878_8_; ++var11) { this.func_175811_a(worldIn, Blocks.air.getDefaultState(), var10, var9, var11, p_74878_2_); } } } } protected void func_175804_a(World worldIn, StructureBoundingBox p_175804_2_, int p_175804_3_, int p_175804_4_, int p_175804_5_, int p_175804_6_, int p_175804_7_, int p_175804_8_, IBlockState p_175804_9_, IBlockState p_175804_10_, boolean p_175804_11_) { for (int var12 = p_175804_4_; var12 <= p_175804_7_; ++var12) { for (int var13 = p_175804_3_; var13 <= p_175804_6_; ++var13) { for (int var14 = p_175804_5_; var14 <= p_175804_8_; ++var14) { if (!p_175804_11_ || this.func_175807_a(worldIn, var13, var12, var14, p_175804_2_).getBlock().getMaterial() != Material.air) { if (var12 != p_175804_4_ && var12 != p_175804_7_ && var13 != p_175804_3_ && var13 != p_175804_6_ && var14 != p_175804_5_ && var14 != p_175804_8_) { this.func_175811_a(worldIn, p_175804_10_, var13, var12, var14, p_175804_2_); } else { this.func_175811_a(worldIn, p_175804_9_, var13, var12, var14, p_175804_2_); } } } } } } /** * arguments: World worldObj, StructureBoundingBox structBB, int minX, int minY, int minZ, int maxX, int maxY, int * maxZ, boolean alwaysreplace, Random rand, StructurePieceBlockSelector blockselector */ protected void fillWithRandomizedBlocks(World worldIn, StructureBoundingBox p_74882_2_, int p_74882_3_, int p_74882_4_, int p_74882_5_, int p_74882_6_, int p_74882_7_, int p_74882_8_, boolean p_74882_9_, Random p_74882_10_, StructureComponent.BlockSelector p_74882_11_) { for (int var12 = p_74882_4_; var12 <= p_74882_7_; ++var12) { for (int var13 = p_74882_3_; var13 <= p_74882_6_; ++var13) { for (int var14 = p_74882_5_; var14 <= p_74882_8_; ++var14) { if (!p_74882_9_ || this.func_175807_a(worldIn, var13, var12, var14, p_74882_2_).getBlock().getMaterial() != Material.air) { p_74882_11_.selectBlocks(p_74882_10_, var13, var12, var14, var12 == p_74882_4_ || var12 == p_74882_7_ || var13 == p_74882_3_ || var13 == p_74882_6_ || var14 == p_74882_5_ || var14 == p_74882_8_); this.func_175811_a(worldIn, p_74882_11_.func_180780_a(), var13, var12, var14, p_74882_2_); } } } } } protected void func_175805_a(World worldIn, StructureBoundingBox p_175805_2_, Random p_175805_3_, float p_175805_4_, int p_175805_5_, int p_175805_6_, int p_175805_7_, int p_175805_8_, int p_175805_9_, int p_175805_10_, IBlockState p_175805_11_, IBlockState p_175805_12_, boolean p_175805_13_) { for (int var14 = p_175805_6_; var14 <= p_175805_9_; ++var14) { for (int var15 = p_175805_5_; var15 <= p_175805_8_; ++var15) { for (int var16 = p_175805_7_; var16 <= p_175805_10_; ++var16) { if (p_175805_3_.nextFloat() <= p_175805_4_ && (!p_175805_13_ || this.func_175807_a(worldIn, var15, var14, var16, p_175805_2_).getBlock().getMaterial() != Material.air)) { if (var14 != p_175805_6_ && var14 != p_175805_9_ && var15 != p_175805_5_ && var15 != p_175805_8_ && var16 != p_175805_7_ && var16 != p_175805_10_) { this.func_175811_a(worldIn, p_175805_12_, var15, var14, var16, p_175805_2_); } else { this.func_175811_a(worldIn, p_175805_11_, var15, var14, var16, p_175805_2_); } } } } } } protected void func_175809_a(World worldIn, StructureBoundingBox p_175809_2_, Random p_175809_3_, float p_175809_4_, int p_175809_5_, int p_175809_6_, int p_175809_7_, IBlockState p_175809_8_) { if (p_175809_3_.nextFloat() < p_175809_4_) { this.func_175811_a(worldIn, p_175809_8_, p_175809_5_, p_175809_6_, p_175809_7_, p_175809_2_); } } protected void func_180777_a(World worldIn, StructureBoundingBox p_180777_2_, int p_180777_3_, int p_180777_4_, int p_180777_5_, int p_180777_6_, int p_180777_7_, int p_180777_8_, IBlockState p_180777_9_, boolean p_180777_10_) { float var11 = (float)(p_180777_6_ - p_180777_3_ + 1); float var12 = (float)(p_180777_7_ - p_180777_4_ + 1); float var13 = (float)(p_180777_8_ - p_180777_5_ + 1); float var14 = (float)p_180777_3_ + var11 / 2.0F; float var15 = (float)p_180777_5_ + var13 / 2.0F; for (int var16 = p_180777_4_; var16 <= p_180777_7_; ++var16) { float var17 = (float)(var16 - p_180777_4_) / var12; for (int var18 = p_180777_3_; var18 <= p_180777_6_; ++var18) { float var19 = ((float)var18 - var14) / (var11 * 0.5F); for (int var20 = p_180777_5_; var20 <= p_180777_8_; ++var20) { float var21 = ((float)var20 - var15) / (var13 * 0.5F); if (!p_180777_10_ || this.func_175807_a(worldIn, var18, var16, var20, p_180777_2_).getBlock().getMaterial() != Material.air) { float var22 = var19 * var19 + var17 * var17 + var21 * var21; if (var22 <= 1.05F) { this.func_175811_a(worldIn, p_180777_9_, var18, var16, var20, p_180777_2_); } } } } } } /** * Deletes all continuous blocks from selected position upwards. Stops at hitting air. */ protected void clearCurrentPositionBlocksUpwards(World worldIn, int p_74871_2_, int p_74871_3_, int p_74871_4_, StructureBoundingBox p_74871_5_) { BlockPos var6 = new BlockPos(this.getXWithOffset(p_74871_2_, p_74871_4_), this.getYWithOffset(p_74871_3_), this.getZWithOffset(p_74871_2_, p_74871_4_)); if (p_74871_5_.func_175898_b(var6)) { while (!worldIn.isAirBlock(var6) && var6.getY() < 255) { worldIn.setBlockState(var6, Blocks.air.getDefaultState(), 2); var6 = var6.offsetUp(); } } } protected void func_175808_b(World worldIn, IBlockState p_175808_2_, int p_175808_3_, int p_175808_4_, int p_175808_5_, StructureBoundingBox p_175808_6_) { int var7 = this.getXWithOffset(p_175808_3_, p_175808_5_); int var8 = this.getYWithOffset(p_175808_4_); int var9 = this.getZWithOffset(p_175808_3_, p_175808_5_); if (p_175808_6_.func_175898_b(new BlockPos(var7, var8, var9))) { while ((worldIn.isAirBlock(new BlockPos(var7, var8, var9)) || worldIn.getBlockState(new BlockPos(var7, var8, var9)).getBlock().getMaterial().isLiquid()) && var8 > 1) { worldIn.setBlockState(new BlockPos(var7, var8, var9), p_175808_2_, 2); --var8; } } } protected boolean func_180778_a(World worldIn, StructureBoundingBox p_180778_2_, Random p_180778_3_, int p_180778_4_, int p_180778_5_, int p_180778_6_, List p_180778_7_, int p_180778_8_) { BlockPos var9 = new BlockPos(this.getXWithOffset(p_180778_4_, p_180778_6_), this.getYWithOffset(p_180778_5_), this.getZWithOffset(p_180778_4_, p_180778_6_)); if (p_180778_2_.func_175898_b(var9) && worldIn.getBlockState(var9).getBlock() != Blocks.chest) { IBlockState var10 = Blocks.chest.getDefaultState(); worldIn.setBlockState(var9, Blocks.chest.func_176458_f(worldIn, var9, var10), 2); TileEntity var11 = worldIn.getTileEntity(var9); if (var11 instanceof TileEntityChest) { WeightedRandomChestContent.generateChestContents(p_180778_3_, p_180778_7_, (TileEntityChest)var11, p_180778_8_); } return true; } else { return false; } } protected boolean func_175806_a(World worldIn, StructureBoundingBox p_175806_2_, Random p_175806_3_, int p_175806_4_, int p_175806_5_, int p_175806_6_, int p_175806_7_, List p_175806_8_, int p_175806_9_) { BlockPos var10 = new BlockPos(this.getXWithOffset(p_175806_4_, p_175806_6_), this.getYWithOffset(p_175806_5_), this.getZWithOffset(p_175806_4_, p_175806_6_)); if (p_175806_2_.func_175898_b(var10) && worldIn.getBlockState(var10).getBlock() != Blocks.dispenser) { worldIn.setBlockState(var10, Blocks.dispenser.getStateFromMeta(this.getMetadataWithOffset(Blocks.dispenser, p_175806_7_)), 2); TileEntity var11 = worldIn.getTileEntity(var10); if (var11 instanceof TileEntityDispenser) { WeightedRandomChestContent.func_177631_a(p_175806_3_, p_175806_8_, (TileEntityDispenser)var11, p_175806_9_); } return true; } else { return false; } } protected void func_175810_a(World worldIn, StructureBoundingBox p_175810_2_, Random p_175810_3_, int p_175810_4_, int p_175810_5_, int p_175810_6_, EnumFacing p_175810_7_) { BlockPos var8 = new BlockPos(this.getXWithOffset(p_175810_4_, p_175810_6_), this.getYWithOffset(p_175810_5_), this.getZWithOffset(p_175810_4_, p_175810_6_)); if (p_175810_2_.func_175898_b(var8)) { ItemDoor.func_179235_a(worldIn, var8, p_175810_7_.rotateYCCW(), Blocks.oak_door); } } public abstract static class BlockSelector { protected IBlockState field_151562_a; private static final String __OBFID = "CL_00000512"; protected BlockSelector() { this.field_151562_a = Blocks.air.getDefaultState(); } public abstract void selectBlocks(Random p_75062_1_, int p_75062_2_, int p_75062_3_, int p_75062_4_, boolean p_75062_5_); public IBlockState func_180780_a() { return this.field_151562_a; } } static final class SwitchEnumFacing { static final int[] field_176100_a = new int[EnumFacing.values().length]; private static final String __OBFID = "CL_00001969"; static { try { field_176100_a[EnumFacing.NORTH.ordinal()] = 1; } catch (NoSuchFieldError var4) { ; } try { field_176100_a[EnumFacing.SOUTH.ordinal()] = 2; } catch (NoSuchFieldError var3) { ; } try { field_176100_a[EnumFacing.WEST.ordinal()] = 3; } catch (NoSuchFieldError var2) { ; } try { field_176100_a[EnumFacing.EAST.ordinal()] = 4; } catch (NoSuchFieldError var1) { ; } } } }