package com.cricketcraft.chisel.block; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class BlockCarvableSlab extends BlockCarvable { public Block master; public BlockCarvableSlab bottom; public BlockCarvableSlab top; public boolean isBottom; public BlockCarvableSlab(BlockCarvable marble) { opaque = true; setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); master = marble; bottom = this; top = new BlockCarvableSlab(this); isBottom = true; } public BlockCarvableSlab(BlockCarvableSlab bottomBlock) { super(); setBlockBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F); master = bottomBlock.master; bottom = bottomBlock; top = this; carverHelper = bottomBlock.carverHelper; isBottom = false; } @Override public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { if (isBottom) { setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } else { setBlockBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F); } } @Override public void setBlockBoundsForItemRender() { setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } @Override public void addCollisionBoxesToList(World par1World, int par2, int par3, int par4, AxisAlignedBB par5AxisAlignedBB, List par6List, Entity par7Entity) { setBlockBoundsBasedOnState(par1World, par2, par3, par4); super.addCollisionBoxesToList(par1World, par2, par3, par4, par5AxisAlignedBB, par6List, par7Entity); } @Override public boolean isOpaqueCube() { return false; } @Override public int damageDropped(int meta) { return meta; } @Override public Item getItemDropped(int par1, Random par2Random, int par3) { return Item.getItemFromBlock(bottom); } @Override public boolean renderAsNormalBlock() { return false; } @Override @SideOnly(Side.CLIENT) public ItemStack getPickBlock(MovingObjectPosition mop, World world, int x, int y, int z) { return new ItemStack(bottom, 1, world.getBlockMetadata(x, y, z)); } @Override public IIcon getIcon(int side, int metadata) { return carverHelper.getIcon(side, metadata); // return master.getIcon(side, metadata); } @Override public void getSubBlocks(Item block, CreativeTabs tabs, List list) { if (isBottom) super.getSubBlocks(block, tabs, list); } }