ok ive got it to the point of no errors but it still doesnt work heres my code it wont grow and i cant use bonemeal on it
package frenchtoaster.test.blocks;
import java.util.List;
import java.util.Random;
import frenchtoaster.test.WorldGenTutBlock;
import frenchtoaster.test.init.LogsSakura;
import frenchtoaster.test.init.sakuraleaves;
import net.minecraft.block.Block;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockSapling;
import net.minecraft.block.IGrowable;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenBigTree;
import net.minecraft.world.gen.feature.WorldGenCanopyTree;
import net.minecraft.world.gen.feature.WorldGenForest;
import net.minecraft.world.gen.feature.WorldGenMegaJungle;
import net.minecraft.world.gen.feature.WorldGenMegaPineTree;
import net.minecraft.world.gen.feature.WorldGenSavannaTree;
import net.minecraft.world.gen.feature.WorldGenTaiga2;
import net.minecraft.world.gen.feature.WorldGenTrees;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class sakuraspaling extends Block implements IGrowable{
public static final PropertyInteger STAGE = PropertyInteger.create("stage", 0, 1);
public sakuraspaling(Material materialIn) {
super(materialIn);
this.setResistance(1.0F);
this.setHardness(0.1F);
this.setStepSound(soundTypeGrass);
}
@Override
public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state)
{
this.grow(worldIn, pos, state, rand);
}
public void grow(World worldIn, BlockPos pos, IBlockState state, Random rand)
{
if (((Integer)state.getValue(STAGE)).intValue() == 0)
{
worldIn.setBlockState(pos, state.cycleProperty(STAGE), 4);
}
else
{
int treehight = rand.nextInt(3);
Block blk2 = LogsSakura.sakuralogs;
// Make a position.
BlockPos pos2 = new BlockPos(pos.getX(), (pos.getY()+1) , pos.getZ());
// Get the default state(basically metadata 0)
IBlockState state1=blk2.getDefaultState();
worldIn.setBlockState(pos2, state1);
Block blk3 = LogsSakura.sakuralogs;
// Make a position.
BlockPos pos3 = new BlockPos(pos.getX(), (pos.getY()+2) , pos.getZ());
// Get the default state(basically metadata 0)
IBlockState state2=blk3.getDefaultState();
worldIn.setBlockState(pos3, state2);
Block blk4 = LogsSakura.sakuralogs;
// Make a position.
BlockPos pos4 = new BlockPos(pos.getX(), (pos.getY()+3) , pos.getZ());
// Get the default state(basically metadata 0)
IBlockState state3=blk4.getDefaultState();
worldIn.setBlockState(pos4, state3);
Block blk5 = LogsSakura.sakuralogs;
// Make a position.
BlockPos pos5 = new BlockPos(pos.getX(), (pos.getY()+4) , pos.getZ());
// Get the default state(basically metadata 0)
IBlockState state4=blk5.getDefaultState();
worldIn.setBlockState(pos5, state4);
if (treehight==2){
Block blk99 = LogsSakura.sakuralogs;
// Make a position.
BlockPos pos99 = new BlockPos(pos.getX(), (pos.getY()+5) , pos.getZ());
BlockPos pos98 = new BlockPos(pos.getX(), (pos.getY()+6) , pos.getZ());
// Get the default state(basically metadata 0)
IBlockState state99=blk99.getDefaultState();
worldIn.setBlockState(pos99, state99);
worldIn.setBlockState(pos98, state99);
}else if(treehight==1){
Block blk991 = LogsSakura.sakuralogs;
// Make a position.
BlockPos pos991 = new BlockPos(pos.getX(), (pos.getY()+5) , pos.getZ());
// Get the default state(basically metadata 0)
IBlockState state991=blk991.getDefaultState();
worldIn.setBlockState(pos991, state991);
}
Block blk6 = sakuraleaves.sakuraleaves;
// Make a position.
BlockPos pos6 = new BlockPos(pos.getX(), (pos.getY()+5+treehight) , pos.getZ());
// Get the default state(basically metadata 0)
IBlockState state5=blk6.getDefaultState();
worldIn.setBlockState(pos6, state5);
BlockPos pos7 = new BlockPos(pos.getX(), (pos.getY()+5+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos7, state5);
BlockPos pos8 = new BlockPos(pos.getX(), (pos.getY()+5+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos8, state5);
BlockPos pos9 = new BlockPos(pos.getX()+1, (pos.getY()+5+treehight) , pos.getZ());
worldIn.setBlockState(pos9, state5);
BlockPos pos10 = new BlockPos(pos.getX()-1, (pos.getY()+5+treehight) , pos.getZ());
worldIn.setBlockState(pos10, state5);
BlockPos pos11 = new BlockPos(pos.getX(), (pos.getY()+4+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos11, state5);
BlockPos pos12 = new BlockPos(pos.getX(), (pos.getY()+4+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos12, state5);
BlockPos pos13 = new BlockPos(pos.getX()+1, (pos.getY()+4+treehight) , pos.getZ());
worldIn.setBlockState(pos13, state5);
BlockPos pos14 = new BlockPos(pos.getX()-1, (pos.getY()+4+treehight) , pos.getZ());
worldIn.setBlockState(pos14, state5);
BlockPos pos15 = new BlockPos(pos.getX()-1, (pos.getY()+3+treehight) , pos.getZ());
worldIn.setBlockState(pos15, state5);
BlockPos pos16 = new BlockPos(pos.getX()+1, (pos.getY()+3+treehight) , pos.getZ());
worldIn.setBlockState(pos16, state5);
BlockPos pos17 = new BlockPos(pos.getX(), (pos.getY()+3+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos17, state5);
BlockPos pos18 = new BlockPos(pos.getX(), (pos.getY()+3+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos18, state5);
BlockPos pos19 = new BlockPos(pos.getX()-1, (pos.getY()+2+treehight) , pos.getZ());
worldIn.setBlockState(pos19, state5);
BlockPos pos20 = new BlockPos(pos.getX()+1, (pos.getY()+2+treehight) , pos.getZ());
worldIn.setBlockState(pos20, state5);
BlockPos pos21 = new BlockPos(pos.getX(), (pos.getY()+2+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos21, state5);
BlockPos pos22 = new BlockPos(pos.getX(), (pos.getY()+2+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos22, state5);
BlockPos pos23 = new BlockPos(pos.getX()-1, (pos.getY()+3+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos23, state5);
BlockPos pos24 = new BlockPos(pos.getX()+1, (pos.getY()+3+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos24, state5);
BlockPos pos25 = new BlockPos(pos.getX()-1, (pos.getY()+3+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos25, state5);
BlockPos pos26 = new BlockPos(pos.getX()+1, (pos.getY()+3+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos26, state5);
BlockPos pos27 = new BlockPos(pos.getX()-1, (pos.getY()+2+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos27, state5);
BlockPos pos28 = new BlockPos(pos.getX()+1, (pos.getY()+2+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos28, state5);
BlockPos pos29 = new BlockPos(pos.getX()-1, (pos.getY()+2+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos29, state5);
BlockPos pos30 = new BlockPos(pos.getX()+1, (pos.getY()+2+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos30, state5);
BlockPos pos31 = new BlockPos(pos.getX()-1, (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos31, state5);
BlockPos pos32 = new BlockPos(pos.getX()+1, (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos32, state5);
BlockPos pos33 = new BlockPos(pos.getX()-2, (pos.getY()+2+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos33, state5);
BlockPos pos34 = new BlockPos(pos.getX()+2, (pos.getY()+2+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos34, state5);
BlockPos pos35 = new BlockPos(pos.getX(), (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos35, state5);
BlockPos pos36 = new BlockPos(pos.getX(), (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos36, state5);
BlockPos pos37 = new BlockPos(pos.getX()+2, (pos.getY()+2+treehight) , pos.getZ());
worldIn.setBlockState(pos37, state5);
BlockPos pos38 = new BlockPos(pos.getX()-2, (pos.getY()+2+treehight) , pos.getZ());
worldIn.setBlockState(pos38, state5);
BlockPos pos39 = new BlockPos(pos.getX()-1, (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos39, state5);
BlockPos pos40 = new BlockPos(pos.getX()+1, (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos40, state5);
BlockPos pos41 = new BlockPos(pos.getX()+2, (pos.getY()+2+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos41, state5);
BlockPos pos42 = new BlockPos(pos.getX()-2, (pos.getY()+2+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos42, state5);
BlockPos pos43 = new BlockPos(pos.getX()+1, (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos43, state5);
BlockPos pos44 = new BlockPos(pos.getX()-1, (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos44, state5);
BlockPos pos45 = new BlockPos(pos.getX()-1, (pos.getY()+3+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos45, state5);
BlockPos pos46 = new BlockPos(pos.getX()+1, (pos.getY()+3+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos46, state5);
BlockPos pos47 = new BlockPos(pos.getX()-2, (pos.getY()+3+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos47, state5);
BlockPos pos48 = new BlockPos(pos.getX()+2, (pos.getY()+3+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos48, state5);
BlockPos pos49 = new BlockPos(pos.getX(), (pos.getY()+3+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos49, state5);
BlockPos pos50 = new BlockPos(pos.getX(), (pos.getY()+3+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos50, state5);
BlockPos pos51 = new BlockPos(pos.getX()+2, (pos.getY()+3+treehight) , pos.getZ());
worldIn.setBlockState(pos51, state5);
BlockPos pos52 = new BlockPos(pos.getX()-2, (pos.getY()+3+treehight) , pos.getZ());
worldIn.setBlockState(pos52, state5);
BlockPos pos53 = new BlockPos(pos.getX()-1, (pos.getY()+3+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos53, state5);
BlockPos pos54 = new BlockPos(pos.getX()+1, (pos.getY()+3+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos54, state5);
BlockPos pos55 = new BlockPos(pos.getX()+2, (pos.getY()+3+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos55, state5);
BlockPos pos56 = new BlockPos(pos.getX()-2, (pos.getY()+3+treehight) , pos.getZ()-1);
worldIn.setBlockState(pos56, state5);
BlockPos pos57 = new BlockPos(pos.getX()+1, (pos.getY()+3+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos57, state5);
BlockPos pos58 = new BlockPos(pos.getX()-1, (pos.getY()+3+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos58, state5);
if (rand.nextInt(10) > 5){
BlockPos pos59 = new BlockPos(pos.getX()+2, (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos59, state5);
BlockPos pos60 = new BlockPos(pos.getX()-2, (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos60, state5);
BlockPos pos61 = new BlockPos(pos.getX()+2, (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos61, state5);
BlockPos pos62 = new BlockPos(pos.getX()-2, (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos62, state5);
BlockPos pos63 = new BlockPos(pos.getX()-2, (pos.getY()+3+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos63, state5);
}else{
BlockPos pos59 = new BlockPos(pos.getX()-2, (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos59, state5);
BlockPos pos60 = new BlockPos(pos.getX()-2, (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos60, state5);
BlockPos pos61 = new BlockPos(pos.getX()+2, (pos.getY()+2+treehight) , pos.getZ()-2);
worldIn.setBlockState(pos61, state5);
BlockPos pos62 = new BlockPos(pos.getX()+2, (pos.getY()+2+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos62, state5);
BlockPos pos63 = new BlockPos(pos.getX()+2, (pos.getY()+3+treehight) , pos.getZ()+2);
worldIn.setBlockState(pos63, state5);
}
if (rand.nextInt(4) == 2){
BlockPos pos63 = new BlockPos(pos.getX()+1, (pos.getY()+4+treehight) , pos.getZ()+1);
worldIn.setBlockState(pos63, state5);
}
}
}
public void generateTree(World worldIn, BlockPos pos, IBlockState state, Random rand)
{
if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(worldIn, rand, pos)) return;
Object object = new WorldGenTutBlock(true);
int i = 0;
int j = 0;
boolean flag = false;
IBlockState iblockstate1 = Blocks.air.getDefaultState();
worldIn.setBlockState(pos, iblockstate1, 4);
if (!((WorldGenerator)object).generate(worldIn, rand, pos.add(i, 0, j)))
{
if (flag)
{
worldIn.setBlockState(pos.add(i, 0, j), state, 4);
worldIn.setBlockState(pos.add(i + 1, 0, j), state, 4);
worldIn.setBlockState(pos.add(i, 0, j + 1), state, 4);
worldIn.setBlockState(pos.add(i + 1, 0, j + 1), state, 4);
}
else
{
worldIn.setBlockState(pos, state, 4);
}
}
}
@Override
public boolean canGrow(World worldIn, BlockPos pos, IBlockState state,
boolean isClient) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos,
IBlockState state) {
// TODO Auto-generated method stub
return true;
}
}