package com.insane.illuminatedbows.blocks; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockSlab; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; 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.Facing; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import java.util.List; import java.util.Random; import com.insane.illuminatedbows.IlluminatedBows; /** * Created by Michael on 1/09/2014. */ public class BlockIlluminatedSlab extends Block { private boolean isHalfSlab; public BlockIlluminatedSlab(boolean par1) { super(Material.wood); this.setBlockName("illuminatedSlab"); this.setCreativeTab(CreativeTabs.tabMaterials); this.setLightLevel(1F); this.setStepSound(Block.soundTypeWood); this.setHardness(2.0F); this.isHalfSlab = true; } @SideOnly(Side.CLIENT) @Override public void registerBlockIcons(IIconRegister par1IconRegister) { this.blockIcon = par1IconRegister.registerIcon("illuminatedbows:illuminatedplanks"); } @SideOnly(Side.CLIENT) @Override public IIcon getIcon(int par1, int par2) { return this.blockIcon; } @Override public boolean isNormalCube() { return false; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if (player.getHeldItem().getItem().equals((new ItemStack(this)).getItem())) { if (side == 1 && world.getBlock(x, y, z) == IlluminatedBlocks.illuminatedSlab && world.getBlockMetadata(x, y, z) == 0) { world.setBlockMetadataWithNotify(x, y, z, 1, 2); world.playSoundEffect((double) x + 0.5D, (double) y + 0.5D, (double) z + 0.5D, "dig.wood", 1.0F, world.rand.nextFloat() * 0.1F + 0.9F); this.isHalfSlab = false; if (!player.capabilities.isCreativeMode) {player.inventory.decrStackSize(player.inventory.currentItem, 1); } return true; } else if (side == 0 && world.getBlock(x, y, z) == IlluminatedBlocks.illuminatedSlab && world.getBlockMetadata(x, y, z) == 2) { world.setBlockMetadataWithNotify(x, y, z, 1, 2); world.playSoundEffect((double) x + 0.5D, (double) y + 0.5D, (double) z + 0.5D, "dig.wood", 1.0F, world.rand.nextFloat() * 0.1F + 0.9F); this.isHalfSlab = false; if (!player.capabilities.isCreativeMode) {player.inventory.decrStackSize(player.inventory.currentItem, 1); } return true; } else { return false; } } else { return false; } } @Override public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int meta) { if (side==0) { this.isHalfSlab = true; return 2; } else if (hitY >= 0.5 && hitY < 1.0) { this.isHalfSlab=true; return 2; } else { this.isHalfSlab=true; return 0; } } public void setBlockBoundsForItemRender() { this.setBlockBounds(0,0,0,1,0.5F,1); } @SideOnly(Side.CLIENT) @Override public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { for (int i=0; i<1; i++) { par3List.add(new ItemStack(par1, 1, i)); } } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { int meta = world.getBlockMetadata(x,y,z); switch (meta) { case 0: { this.setBlockBounds(0,0,0,1,0.5F,1); break; } case 1: { this.setBlockBounds(0,0,0,1,1,1); break; } case 2: { this.setBlockBounds(0,0.5F,0,1,1,1); break; } /*default: this.setBlockBounds(0,0,0,1,1,1); break;*/ } } @Override public int quantityDropped(Random p_149745_1_) { if (this.isHalfSlab) { return 1; } else { return 2; } } }