package zmaster587.advancedRocketry.block.plant; import net.minecraft.block.BlockBush; import net.minecraft.block.IGrowable; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import zmaster587.advancedRocketry.world.gen.WorldGenAlienTree; import java.util.List; import java.util.Random; public class BlockAlienSapling extends BlockBush implements IGrowable { public String[] names = new String[] { "blueTree" }; public static final PropertyInteger STAGE = PropertyInteger.create("stage", 0, 1); public BlockAlienSapling() { this.setDefaultState(this.blockState.getBaseState().withProperty(STAGE, Integer.valueOf(0))); } @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs creativeTab, List list) { list.add(new ItemStack(item, 1, 0)); } public void generateTree(World world, BlockPos pos, IBlockState state, Random random) { if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(world, random, pos)) return; IBlockState l = this.getDefaultState();//world.getBlockState(pos);//world.getBlockMetadata(x, y, z) & 7; Object object = new WorldGenAlienTree(true); int i1 = 0; int j1 = 0; if (!((WorldGenerator)object).generate(world, random, pos.add(i1, 0, j1))) { world.setBlockState(pos, l, 4); } } public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient) { return true; } public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state) { return (double)worldIn.rand.nextFloat() < 0.45D; } 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 { this.generateTree(worldIn, pos, state, rand); } } /** * Convert the given metadata into a BlockState for this Block */ public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(STAGE, Integer.valueOf((meta & 8) >> 3)); } /** * Convert the BlockState into the correct metadata value */ public int getMetaFromState(IBlockState state) { int i = 0; i = i | ((Integer)state.getValue(STAGE)).intValue() << 3; return i; } protected BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[] {STAGE}); } }