public boolean generate(World world, Random random, int i, int j, int k) { int l = random.nextInt(3) + 4; boolean flag = true; if (j < 1 || j + l + 1 > world.getHeight()) { return false; } for (int i1 = j; i1 <= j + 1 + l; i1++) { byte byte0 = 1; if (i1 == j) { byte0 = 0; } if (i1 >= j + 1 + l - 2) { byte0 = 2; } for (int i2 = i - byte0; i2 <= i + byte0 && flag; i2++) { for (int l2 = k - byte0; l2 <= k + byte0 && flag; l2++) { if (i1 >= 0 && i1 < world.getHeight()) { int j3 = world.getBlockId(i2, i1, l2); if (j3 != 0 && j3 != mod_TFC_Core.terraLeaves.blockID) { flag = false; } } else { flag = false; } } } } if (!flag) { return false; } int var3 = world.getBlockId(i, j - 1, k); if (treeId == 15) { int x = 0; } if (!(var3 == mod_TFC_Core.terraDirt.blockID || var3 == mod_TFC_Core.terraDirt2.blockID || var3 == mod_TFC_Core.terraGrass.blockID || var3 == mod_TFC_Core.terraGrass2.blockID || var3 == mod_TFC_Core.terraClayGrass.blockID || var3 == mod_TFC_Core.terraClayGrass2.blockID) || j >= world.getHeight() - l - 1) { return false; } world.setBlockAndMetadata( i, j - 1, k, world.getBiomeGenForCoords(i, k).DirtID, world.getBiomeGenForCoords(i, k).SurfaceMeta); for (int k1 = j - 3 + l; k1 <= j + l; k1++) { int j2 = k1 - (j + l); int i3 = 1 - j2 / 2; for (int k3 = i - i3; k3 <= i + i3; k3++) { int l3 = k3 - i; for (int i4 = k - i3; i4 <= k + i3; i4++) { int j4 = i4 - k; if ((Math.abs(l3) != i3 || Math.abs(j4) != i3 || random.nextInt(2) != 0 && j2 != 0) && !Block.opaqueCubeLookup[world.getBlockId(k3, k1, i4)]) { setBlockAndMetadata(world, k3, k1, i4, mod_TFC_Core.terraLeaves.blockID, treeId); } } } } for (int l1 = 0; l1 < l; l1++) { int k2 = world.getBlockId(i, j + l1, k); if (k2 == 0 || k2 == mod_TFC_Core.terraLeaves.blockID) { setBlockAndMetadata(world, i, j + l1, k, mod_TFC_Core.terraWood.blockID, treeId); } } return true; }