package game.worldgen.feature; import game.util.Predicates; import game.block.BlockSand; import game.block.BlockSlab; import game.init.Blocks; import game.pattern.BlockStateHelper; import game.rng.Random; import game.world.BlockPos; import game.world.Facing; import game.world.State; import game.world.WorldServer; import game.worldgen.FeatureGenerator; public class WorldGenDesertWells extends FeatureGenerator { private static final BlockStateHelper field_175913_a = BlockStateHelper.forBlock(Blocks.sand).where(BlockSand.VARIANT, Predicates.equalTo(BlockSand.EnumType.SAND)); private final State field_175911_b = Blocks.sandstone_slab.getState().withProperty(BlockSlab.FACING, Facing.DOWN); private final State field_175912_c = Blocks.sandstone.getState(); private final State field_175910_d = Blocks.flowing_water.getState(); public boolean generate(WorldServer worldIn, Random rand, BlockPos position) { while (worldIn.isAirBlock(position) && position.getY() > 2) { position = position.down(); } if (!field_175913_a.test(worldIn.getState(position))) { return false; } else { for (int i = -2; i <= 2; ++i) { for (int j = -2; j <= 2; ++j) { if (worldIn.isAirBlock(position.add(i, -1, j)) && worldIn.isAirBlock(position.add(i, -2, j))) { return false; } } } for (int l = -1; l <= 0; ++l) { for (int l1 = -2; l1 <= 2; ++l1) { for (int k = -2; k <= 2; ++k) { worldIn.setState(position.add(l1, l, k), this.field_175912_c, 2); } } } worldIn.setState(position, this.field_175910_d, 2); for (Facing enumfacing : Facing.Plane.HORIZONTAL) { worldIn.setState(position.offset(enumfacing), this.field_175910_d, 2); } for (int i1 = -2; i1 <= 2; ++i1) { for (int i2 = -2; i2 <= 2; ++i2) { if (i1 == -2 || i1 == 2 || i2 == -2 || i2 == 2) { worldIn.setState(position.add(i1, 1, i2), this.field_175912_c, 2); } } } worldIn.setState(position.add(2, 1, 0), this.field_175911_b, 2); worldIn.setState(position.add(-2, 1, 0), this.field_175911_b, 2); worldIn.setState(position.add(0, 1, 2), this.field_175911_b, 2); worldIn.setState(position.add(0, 1, -2), this.field_175911_b, 2); for (int j1 = -1; j1 <= 1; ++j1) { for (int j2 = -1; j2 <= 1; ++j2) { if (j1 == 0 && j2 == 0) { worldIn.setState(position.add(j1, 4, j2), this.field_175912_c, 2); } else { worldIn.setState(position.add(j1, 4, j2), this.field_175911_b, 2); } } } for (int k1 = 1; k1 <= 3; ++k1) { worldIn.setState(position.add(-1, k1, -1), this.field_175912_c, 2); worldIn.setState(position.add(-1, k1, 1), this.field_175912_c, 2); worldIn.setState(position.add(1, k1, -1), this.field_175912_c, 2); worldIn.setState(position.add(1, k1, 1), this.field_175912_c, 2); } return true; } } }