Everything posted by Creepy27
-
Custom Tree Code Issue
Oh yeah, I forgot, sorry
-
Custom Tree Code Issue
Hi, I´m having a little problem with custom trees code in eclipse. Everything it´s fine, no errors or bugs in the code Minecraft loads with no errors But when the custom sapling grows (naturally or bonemealed) spawn a vanilla oak tree Any ideas of what´s wrong? here is the code that should generate a custom tree (i think), instead of the oak one- package food.mod.world.gen.generators; import java.util.Random; import food.mod.init.ModBlocks; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenAbstractTree; import net.minecraftforge.common.IPlantable; public class WorldGenBananaTrees extends WorldGenAbstractTree { public static final IBlockState LOG = ModBlocks.BANANA_LOG.getDefaultState(); public static final IBlockState LEAF = ModBlocks.BANANA_LEAVES_BLOCK.getDefaultState(); private final int minHeight; public WorldGenBananaTrees() { super(false); this.minHeight = 5; } @Override public boolean generate(World world, Random rand, BlockPos pos) { int height = this.minHeight + rand.nextInt(3); boolean flag = true; int x = pos.getX(); int y = pos.getY(); int z = pos.getZ(); for(int yPos = y; yPos <= y + 1 + height; yPos++) { int b0 = 2; if(yPos == y) b0 = 1; if(yPos >= y + 1 + height - 2) b0 = 2; BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); for(int xPos = x - b0; xPos <= x + b0 && flag; xPos++) { for(int zPos = z - b0; zPos <- z + b0 && flag; zPos++) { if(yPos >= 0 && yPos < world.getHeight()) { if(!this.isReplaceable(world, new BlockPos(xPos, yPos, zPos))) { flag = false; } } else { flag = false; } } } } if(!flag) { return false; } else { BlockPos down = pos.down(); IBlockState state = world.getBlockState(down); boolean isSoil = state.getBlock().canSustainPlant(state, world, down, EnumFacing.UP, (IPlantable) Blocks.SAPLING); if(isSoil && y < world.getHeight() - height - 1) { state.getBlock().onPlantGrow(state, world, down, pos); for(int yPos = y - 3 + height; yPos <= y + height; yPos++) { int b1 = yPos - (y + height); int b2 = 1 - b1 / 2; for(int xPos = x - b2; xPos <= x + b2; xPos++) { int b3 = xPos - x; for(int zPos = z - b2; zPos <= z + b2; zPos++) { int b4 = zPos - z; if(Math.abs(b3) != b2 || Math.abs(b4) != b2 || rand.nextInt(2) != 0 && b1 != 0) { BlockPos treePos = new BlockPos(xPos, yPos, zPos); IBlockState treeState = world.getBlockState(treePos); if(treeState.getBlock().isAir(treeState, world, treePos) || treeState.getBlock().isAir(treeState, world, treePos)) { this.setBlockAndNotifyAdequately(world, treePos, LEAF); this.setBlockAndNotifyAdequately(world, treePos.add(0, -0.25 * height, 0), LEAF); this.setBlockAndNotifyAdequately(world, treePos.add(0, -0.5 * height, 0), LEAF); } } } } } for(int logHeight = 0; logHeight < height; logHeight++) { BlockPos up = pos.up(logHeight); IBlockState logState = world.getBlockState(up); if(logState.getBlock().isAir(logState, world, up) || logState.getBlock().isLeaves(logState, world, up)) { this.setBlockAndNotifyAdequately(world, pos.up(logHeight), LOG); } } return true; } } return true; } @Override protected boolean canGrowInto(Block blockType) { Material material = blockType.getDefaultState().getMaterial(); return material == Material.AIR || material == Material.LEAVES || material == Material.GROUND || blockType == Blocks.GRASS || blockType == Blocks.DIRT || blockType == Blocks.LOG || blockType == Blocks.LOG2 || blockType == Blocks.SAPLING || blockType == Blocks.VINE; } }
IPS spam blocked by CleanTalk.