package zmaster587.advancedRocketry.world.gen; import java.util.Random; import zmaster587.advancedRocketry.api.AdvancedRocketryBlocks; import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenAbstractTree; public class WorldGenCharredTree extends WorldGenAbstractTree { /** The minimum height of a generated tree. */ private final int minTreeHeight; public WorldGenCharredTree(boolean doNotify, int minHeight) { super(doNotify); this.minTreeHeight = minHeight; } public boolean generate(World world, Random rand, int x, int y, int z) { int l = rand.nextInt(3) + this.minTreeHeight; boolean flag = true; if (y >= 1 && y + l + 1 <= 256) { byte b0; int k1; Block block; for (int i1 = y; i1 <= y + 1 + l; ++i1) { b0 = 1; if (i1 == y) { b0 = 0; } if (i1 >= y + 1 + l - 2) { b0 = 2; } for (int j1 = x - b0; j1 <= x + b0 && flag; ++j1) { for (k1 = z - b0; k1 <= z + b0 && flag; ++k1) { if (i1 >= 0 && i1 < 256) { block = world.getBlock(j1, i1, k1); if (!this.isReplaceable(world, j1, i1, k1)) { flag = false; } } else { flag = false; } } } } if (!flag) { return false; } else { Block block2 = world.getBlock(x, y - 1, z); if (y < 256 - l - 1) { block2.onPlantGrow(world, x, y - 1, z, x, y, z); b0 = 3; for (k1 = 0; k1 < l; ++k1) { block = world.getBlock(x, y + k1, z); if (block.isAir(world, x, y + k1, z) || block.isLeaves(world, x, y + k1, z)) { this.setBlockAndNotifyAdequately(world, x, y + k1, z, AdvancedRocketryBlocks.blockCharcoalLog, 0); } } return true; } else { return false; } } } else { return false; } } }