net.minecraft.tileentity

## Class TileEntityFurnace

- java.lang.Object
- - net.minecraft.tileentity.TileEntity
  - - net.minecraft.tileentity.TileEntityFurnace

- All Implemented Interfaces:
    IInventory, ISidedInventory

      public class TileEntityFurnace
      extends TileEntity
      implements ISidedInventory

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `int` | `currentItemBurnTime` The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for
    `int` | `furnaceBurnTime` The number of ticks that the furnace will keep burning
    `int` | `furnaceCookTime` The number of ticks that the current item has been cooking for

    - ### Fields inherited from class net.minecraft.tileentity.TileEntity

      `blockMetadata, blockType, INFINITE_EXTENT_AABB, worldObj, xCoord, yCoord, zCoord`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TileEntityFurnace()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canExtractItem(int par1, ItemStack par2ItemStack, int par3)` Returns true if automation can extract the given item in the given slot from the given side.
    `boolean` | `canInsertItem(int par1, ItemStack par2ItemStack, int par3)` Returns true if automation can insert the given item in the given slot from the given side.
    `void` | `closeChest()`
    `ItemStack` | `decrStackSize(int par1, int par2)` Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a new stack.
    `int[]` | `getAccessibleSlotsFromSide(int par1)` Returns an array containing the indices of the slots that can be accessed by automation on the given side of this block.
    `int` | `getBurnTimeRemainingScaled(int par1)`
    `int` | `getCookProgressScaled(int par1)`
    `int` | `getInventoryStackLimit()` Returns the maximum stack size for a inventory slot.
    `String` | `getInvName()` Returns the name of the inventory.
    `static int` | `getItemBurnTime(ItemStack par0ItemStack)` Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't fuel
    `int` | `getSizeInventory()` Returns the number of slots in the inventory.
    `ItemStack` | `getStackInSlot(int par1)` Returns the stack in slot i
    `ItemStack` | `getStackInSlotOnClosing(int par1)` When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - like when you close a workbench GUI.
    `boolean` | `isBurning()` Returns true if the furnace is currently burning
    `boolean` | `isInvNameLocalized()` If this returns false, the inventory name will be used as an unlocalized name, and translated into the player's language.
    `static boolean` | `isItemFuel(ItemStack par0ItemStack)` Return true if item is a fuel source (getItemBurnTime() > 0).
    `boolean` | `isItemValidForSlot(int par1, ItemStack par2ItemStack)` Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot.
    `boolean` | `isUseableByPlayer(EntityPlayer par1EntityPlayer)` Do not make give this method the name canInteractWith because it clashes with Container
    `void` | `openChest()`
    `void` | `readFromNBT(NBTTagCompound par1NBTTagCompound)` Reads a tile entity from NBT.
    `void` | `setGuiDisplayName(String par1Str)` Sets the custom display name to use when opening a GUI linked to this tile entity.
    `void` | `setInventorySlotContents(int par1, ItemStack par2ItemStack)` Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
    `void` | `smeltItem()` Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack
    `void` | `updateEntity()` Allows the entity to update its state.
    `void` | `writeToNBT(NBTTagCompound par1NBTTagCompound)` Writes a tile entity to NBT.

    - ### Methods inherited from class net.minecraft.tileentity.TileEntity

      `addMapping, canUpdate, createAndLoadEntity, func_85027_a, getBlockMetadata, getBlockType, getDescriptionPacket, getDistanceFrom, getMaxRenderDistanceSquared, getRenderBoundingBox, getWorldObj, hasWorldObj, invalidate, isInvalid, onChunkUnload, onDataPacket, onInventoryChanged, receiveClientEvent, setWorldObj, shouldRefresh, shouldRenderInPass, updateContainingBlockInfo, validate`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface net.minecraft.inventory.IInventory

      `onInventoryChanged`

- - ### Field Detail

    - #### furnaceBurnTime

          public int furnaceBurnTime

      The number of ticks that the furnace will keep burning

    - #### currentItemBurnTime

          public int currentItemBurnTime

      The number of ticks that a fresh copy of the currently-burning item would keep the furnace burning for

    - #### furnaceCookTime

          public int furnaceCookTime

      The number of ticks that the current item has been cooking for

  - ### Constructor Detail

    - #### TileEntityFurnace

          public TileEntityFurnace()

  - ### Method Detail

    - #### getSizeInventory

          public int getSizeInventory()

      Returns the number of slots in the inventory.
      Specified by:
        `getSizeInventory` in interface `IInventory`

    - #### getStackInSlot

          public ItemStack getStackInSlot(int par1)

      Returns the stack in slot i
      Specified by:
        `getStackInSlot` in interface `IInventory`

    - #### decrStackSize

          public ItemStack decrStackSize(int par1,
                                int par2)

      Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a new stack.
      Specified by:
        `decrStackSize` in interface `IInventory`

    - #### getStackInSlotOnClosing

          public ItemStack getStackInSlotOnClosing(int par1)

      When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem - like when you close a workbench GUI.
      Specified by:
        `getStackInSlotOnClosing` in interface `IInventory`

    - #### setInventorySlotContents

          public void setInventorySlotContents(int par1,
                                      ItemStack par2ItemStack)

      Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
      Specified by:
        `setInventorySlotContents` in interface `IInventory`

    - #### getInvName

          public String getInvName()

      Returns the name of the inventory.
      Specified by:
        `getInvName` in interface `IInventory`

    - #### isInvNameLocalized

          public boolean isInvNameLocalized()

      If this returns false, the inventory name will be used as an unlocalized name, and translated into the player's language. Otherwise it will be used directly.
      Specified by:
        `isInvNameLocalized` in interface `IInventory`

    - #### setGuiDisplayName

          public void setGuiDisplayName(String par1Str)

      Sets the custom display name to use when opening a GUI linked to this tile entity.

    - #### readFromNBT

          public void readFromNBT(NBTTagCompound par1NBTTagCompound)

      Reads a tile entity from NBT.
      Overrides:
        `readFromNBT` in class `TileEntity`

    - #### writeToNBT

          public void writeToNBT(NBTTagCompound par1NBTTagCompound)

      Writes a tile entity to NBT.
      Overrides:
        `writeToNBT` in class `TileEntity`

    - #### getInventoryStackLimit

          public int getInventoryStackLimit()

      Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't this more of a set than a get?*
      Specified by:
        `getInventoryStackLimit` in interface `IInventory`

    - #### getCookProgressScaled

          public int getCookProgressScaled(int par1)

    - #### getBurnTimeRemainingScaled

          public int getBurnTimeRemainingScaled(int par1)

    - #### isBurning

          public boolean isBurning()

      Returns true if the furnace is currently burning

    - #### updateEntity

          public void updateEntity()

      Allows the entity to update its state. Overridden in most subclasses, e.g. the mob spawner uses this to count ticks and creates a new spawn inside its implementation.
      Overrides:
        `updateEntity` in class `TileEntity`

    - #### smeltItem

          public void smeltItem()

      Turn one item from the furnace source stack into the appropriate smelted item in the furnace result stack

    - #### getItemBurnTime

          public static int getItemBurnTime(ItemStack par0ItemStack)

      Returns the number of ticks that the supplied fuel item will keep the furnace burning, or 0 if the item isn't fuel

    - #### isItemFuel

          public static boolean isItemFuel(ItemStack par0ItemStack)

      Return true if item is a fuel source (getItemBurnTime() > 0).

    - #### isUseableByPlayer

          public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)

      Do not make give this method the name canInteractWith because it clashes with Container
      Specified by:
        `isUseableByPlayer` in interface `IInventory`

    - #### openChest

          public void openChest()

      Specified by:
        `openChest` in interface `IInventory`

    - #### closeChest

          public void closeChest()

      Specified by:
        `closeChest` in interface `IInventory`

    - #### isItemValidForSlot

          public boolean isItemValidForSlot(int par1,
                                   ItemStack par2ItemStack)

      Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot.
      Specified by:
        `isItemValidForSlot` in interface `IInventory`

    - #### getAccessibleSlotsFromSide

          public int[] getAccessibleSlotsFromSide(int par1)

      Returns an array containing the indices of the slots that can be accessed by automation on the given side of this block.
      Specified by:
        `getAccessibleSlotsFromSide` in interface `ISidedInventory`

    - #### canInsertItem

          public boolean canInsertItem(int par1,
                              ItemStack par2ItemStack,
                              int par3)

      Returns true if automation can insert the given item in the given slot from the given side. Args: Slot, item, side
      Specified by:
        `canInsertItem` in interface `ISidedInventory`

    - #### canExtractItem

          public boolean canExtractItem(int par1,
                               ItemStack par2ItemStack,
                               int par3)

      Returns true if automation can extract the given item in the given slot from the given side. Args: Slot, item, side
      Specified by:
        `canExtractItem` in interface `ISidedInventory`