/// <summary> /// Called whenever the block is removed. /// </summary> public override void OnBlockRemoval(World par1World, int par2, int par3, int par4) { if (!KeepFurnaceInventory) { TileEntityFurnace tileentityfurnace = (TileEntityFurnace)par1World.GetBlockTileEntity(par2, par3, par4); if (tileentityfurnace != null) { label0: for (int i = 0; i < tileentityfurnace.GetSizeInventory(); i++) { ItemStack itemstack = tileentityfurnace.GetStackInSlot(i); if (itemstack == null) { continue; } float f = FurnaceRand.NextFloat() * 0.8F + 0.1F; float f1 = FurnaceRand.NextFloat() * 0.8F + 0.1F; float f2 = FurnaceRand.NextFloat() * 0.8F + 0.1F; do { if (itemstack.StackSize <= 0) { goto label0; } int j = FurnaceRand.Next(21) + 10; if (j > itemstack.StackSize) { j = itemstack.StackSize; } itemstack.StackSize -= j; EntityItem entityitem = new EntityItem(par1World, (float)par2 + f, (float)par3 + f1, (float)par4 + f2, new ItemStack(itemstack.ItemID, j, itemstack.GetItemDamage())); if (itemstack.HasTagCompound()) { entityitem.ItemStack.SetTagCompound((NBTTagCompound)itemstack.GetTagCompound().Copy()); } float f3 = 0.05F; entityitem.MotionX = (float)FurnaceRand.NextGaussian() * f3; entityitem.MotionY = (float)FurnaceRand.NextGaussian() * f3 + 0.2F; entityitem.MotionZ = (float)FurnaceRand.NextGaussian() * f3; par1World.SpawnEntityInWorld(entityitem); }while (true); } } } base.OnBlockRemoval(par1World, par2, par3, par4); }
/// <summary> /// Called upon block activation (left or right click on the block.). The three integers represent x,y,z of the /// block. /// </summary> public override bool BlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer) { if (par1World.IsRemote) { return(true); } TileEntityFurnace tileentityfurnace = (TileEntityFurnace)par1World.GetBlockTileEntity(par2, par3, par4); if (tileentityfurnace != null) { par5EntityPlayer.DisplayGUIFurnace(tileentityfurnace); } return(true); }
public GuiFurnace(InventoryPlayer par1InventoryPlayer, TileEntityFurnace par2TileEntityFurnace) : base(new ContainerFurnace(par1InventoryPlayer, par2TileEntityFurnace)) { FurnaceInventory = par2TileEntityFurnace; }
/// <summary> /// Displays the furnace GUI for the passed in furnace entity. Args: tileEntityFurnace /// </summary> public override void DisplayGUIFurnace(TileEntityFurnace par1TileEntityFurnace) { Mc.DisplayGuiScreen(new GuiFurnace(Inventory, par1TileEntityFurnace)); }