package micdoodle8.mods.galacticraft.planets.venus.world.gen; import micdoodle8.mods.galacticraft.planets.venus.VenusBlocks; import micdoodle8.mods.galacticraft.planets.venus.blocks.BlockBasicVenus; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import java.util.Random; public class WorldGenVaporPool extends WorldGenerator { public WorldGenVaporPool() { } @Override public boolean generate(World worldIn, Random rand, BlockPos position) { if (position.getY() <= 4) { return false; } IBlockState venusSoft = VenusBlocks.venusBlock.getDefaultState().withProperty(BlockBasicVenus.BASIC_TYPE_VENUS, BlockBasicVenus.EnumBlockBasicVenus.ROCK_SOFT); int radius = 5 + rand.nextInt(4); int radiusSq = radius * radius; for (int poolX = -radius; poolX <= radius; poolX++) { for (int poolY = -radius; poolY <= radius; poolY++) { for (int poolZ = -radius; poolZ <= radius; poolZ++) { int distance = poolX * poolX + poolY * poolY + poolZ * poolZ; if (distance <= radiusSq) { BlockPos pos = new BlockPos(poolX + position.getX(), poolY + position.getY(), poolZ + position.getZ()); worldIn.setBlockState(pos, distance >= radiusSq - 16 ? venusSoft : (poolY <= 0 ? VenusBlocks.sulphuricAcid.getDefaultState() : Blocks.air.getDefaultState()), distance == radiusSq ? 3 : 2); } } } } boolean firstSet = false; for (int i = 255; i >= position.getY() + 1; --i) { BlockPos pos = new BlockPos(position.getX(), i, position.getZ()); if (worldIn.getBlockState(pos).getBlock() != Blocks.air) { if (!firstSet) { worldIn.setBlockState(pos, VenusBlocks.spout.getDefaultState(), 3); firstSet = true; } else { worldIn.setBlockState(pos, Blocks.air.getDefaultState(), 2); } } } return true; } }