package cn.mcmod.sakura.block.tree; import cn.mcmod.sakura.CommonProxy; import cn.mcmod.sakura.SakuraMain; import cn.mcmod.sakura.block.BlockLoader; import cn.mcmod.sakura.client.SakuraParticleType; import net.minecraft.block.BlockLeaves; import net.minecraft.block.BlockPlanks; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumFacing; import net.minecraft.util.NonNullList; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; import java.util.Random; public class BlockMapleLeaveRed extends BlockLeaves { public BlockMapleLeaveRed() { this.setHardness(0.2F); this.setLightOpacity(1); this.setCreativeTab(CommonProxy.tab); this.setDefaultState(blockState.getBaseState().withProperty(CHECK_DECAY, false).withProperty(DECAYABLE, false)); } @SideOnly(Side.CLIENT) public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand) { Blocks.LEAVES.randomDisplayTick(stateIn, worldIn, pos, rand); if (rand.nextInt(40) == 0) { int j = rand.nextInt(2) * 2 - 1; int k = rand.nextInt(2) * 2 - 1; double d0 = pos.getX() + 0.5D + 0.25D * j; double d1 = pos.getY() - 0.15D; double d2 = pos.getZ() + 0.5D + 0.25D * k; double d3 = rand.nextFloat() * j * 0.1D; double d4 = ((rand.nextFloat()) * 0.055D) + 0.015D; double d5 = rand.nextFloat() * k * 0.1D; SakuraMain.proxy.spawnParticle(SakuraParticleType.MAPLERED, d0, d1, d2, d3, -d4, d5); } } @Override public BlockStateContainer createBlockState() { return new BlockStateContainer(this, CHECK_DECAY, DECAYABLE); } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(DECAYABLE, (meta & 4) > 0).withProperty(CHECK_DECAY, (meta & 8) > 0); } @Override public int getMetaFromState(IBlockState state) { int i = 0; if (state.getValue(DECAYABLE)) { i |= 4; } if (state.getValue(CHECK_DECAY)) { i |= 8; } return i; } @Override public void getSubBlocks(CreativeTabs creativeTab, NonNullList<ItemStack> list) { list.add(new ItemStack(this, 1, 0)); } @Override public Item getItemDropped(IBlockState state, Random random, int fortune) { return Item.getItemFromBlock(BlockLoader.MAPLE_SAPLING_RED); } @Override public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state) { return new ItemStack(this); } @Override protected void dropApple(World worldIn, BlockPos pos, IBlockState state, int chance) { if (worldIn.rand.nextInt(chance) >= 0 && worldIn.rand.nextInt(chance) <= 4) { /* spawnAsEntity(worldIn, pos, new ItemStack(Tofu));*/ } } @Override public ItemStack getSilkTouchDrop(IBlockState state) { return new ItemStack(this, 1); } @Override public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { return new ItemStack(this, 1); } @Override public int getSaplingDropChance(IBlockState state) { return 20; } @Override public BlockPlanks.EnumType getWoodType(int meta) { return null; } @Override public List<ItemStack> onSheared(ItemStack item, IBlockAccess world, BlockPos pos, int fortune) { return NonNullList.withSize(1, new ItemStack(this, 1)); } @Override @SideOnly(Side.CLIENT) public BlockRenderLayer getBlockLayer(){ return Blocks.LEAVES.getBlockLayer(); } @Override public boolean isOpaqueCube(IBlockState state){ return Blocks.LEAVES.isOpaqueCube(state); } @SideOnly(Side.CLIENT) @Override public boolean shouldSideBeRendered(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side){ return Blocks.LEAVES.shouldSideBeRendered(state, world, pos, side); } }