package net.tropicraft.block; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.tropicraft.block.tileentity.TileEntityCurareBowl; import net.tropicraft.factory.TileEntityFactory; import net.tropicraft.registry.TCBlockRegistry; public class BlockCurareBowl extends BlockTropicraft implements ITileEntityProvider { public BlockCurareBowl() { super(Material.rock); } @Override public TileEntity createNewTileEntity(World var1, int var2) { return TileEntityFactory.getCurareBowlTE(); } /** * ejects contained items into the world, and notifies neighbours of an update, as appropriate */ @Override public void breakBlock(World par1World, int par2, int par3, int par4, Block par5, int par6) { TileEntityCurareBowl bowl = (TileEntityCurareBowl)par1World.getTileEntity(par2, par3, par4); if (bowl != null && !par1World.isRemote) { if (!bowl.hasMetMaxNumClicks()) { for (int var8 = 0; var8 < bowl.getIngredients().length; ++var8) { ItemStack var9 = bowl.getIngredientList().get(var8); if (var9 != null) { float var10 = par1World.rand.nextFloat() * 0.8F + 0.1F; float var11 = par1World.rand.nextFloat() * 0.8F + 0.1F; EntityItem item = new EntityItem(par1World, par2 + var10, par3 + var10, par4 + var11, var9); par1World.spawnEntityInWorld(item); } } } else { bowl.dropResult(); } } par1World.removeTileEntity(par2, par3, par4); super.breakBlock(par1World, par2, par3, par4, par5, par6); } @Override public boolean renderAsNormalBlock() { return false; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean canPlaceBlockAt(World par1World, int par2, int par3, int par4) { return super.canPlaceBlockAt(par1World, par2, par3, par4) && par1World.doesBlockHaveSolidTopSurface(par1World, par2, par3 - 1, par4); } @Override public int getRenderType() { return -1; } @Override public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityplayer, int doop, float f1, float f2, float f3) { if (!world.isRemote && entityplayer.getCurrentEquippedItem() != null && entityplayer.getCurrentEquippedItem().getItem() != null) { TileEntityCurareBowl bowl = (TileEntityCurareBowl) world.getTileEntity(i, j, k); if (entityplayer.getCurrentEquippedItem().getItem() == Items.stick) { if (bowl.isBowlFull()) { bowl.incrementNumClicks(); if (bowl.hasMetMaxNumClicks()) { bowl.resetClicks(); bowl.dropResult(); } } } else if (entityplayer.getCurrentEquippedItem().getItem() == Item.getItemFromBlock(TCBlockRegistry.flowers)) { bowl.addIngredient(entityplayer.getCurrentEquippedItem()); if (!entityplayer.capabilities.isCreativeMode) entityplayer.getCurrentEquippedItem().stackSize--; } } return true; } }