Package org.bukkit.block

# Interface Furnace

All Superinterfaces:
  `BlockInventoryHolder`, `BlockState`, `Container`, `InventoryHolder`, `Lockable`, `Metadatable`, `Nameable`, `PersistentDataHolder`, `TileState`

All Known Subinterfaces:
  `BlastFurnace`, `Smoker`

public interface Furnace extends Container
Represents a captured state of a furnace.

## Method Summary

Modifier and Type
Method
Description
`short`
`getBurnTime()`
Get burn time.
`double`
`getCookSpeedMultiplier()`
Gets the cook speed multiplier that this `Furnace` will cook compared to vanilla.
`short`
`getCookTime()`
Get cook time.
`int`
`getCookTimeTotal()`
Get cook time total.
`@NotNull FurnaceInventory`
`getInventory()`
Gets the inventory of the block represented by this block state.
`@NotNull Map<CookingRecipe<?>,Integer>`
`getRecipesUsed()`
Get the recipes used in this furnace.
`int`
`getRecipeUsedCount(NamespacedKey furnaceRecipe)`
Gets the number of times a recipe has been used since the last player removed items from the result slot.
`@NotNull FurnaceInventory`
`getSnapshotInventory()`
Gets the captured inventory snapshot of this container.
`boolean`
`hasRecipeUsedCount(NamespacedKey furnaceRecipe)`
Checks if the recipe has a used count present on this furnace.
`void`
`setBurnTime(short burnTime)`
Set burn time.
`void`
`setCookSpeedMultiplier(double multiplier)`
Sets the speed multiplier that this `Furnace` will cook compared to vanilla.
`void`
`setCookTime(short cookTime)`
Set cook time.
`void`
`setCookTimeTotal(int cookTimeTotal)`
Set cook time.
`void`
`setRecipesUsed(@NotNull Map<CookingRecipe<?>,Integer> recipesUsed)`
Sets all recipes used by this furnace.
`void`
`setRecipeUsedCount(CookingRecipe<?> furnaceRecipe, int count)`
Sets the number of times a recipe has been used.

### Methods inherited from interface org.bukkit.inventory.BlockInventoryHolder

`getBlock`

### Methods inherited from interface org.bukkit.block.BlockState

`getBlock, getBlockData, getChunk, getData, getDrops, getDrops, getDrops, getLightLevel, getLocation, getLocation, getRawData, getType, getWorld, getX, getY, getZ, isCollidable, isPlaced, setBlockData, setData, setRawData, setType, update, update, update`

### Methods inherited from interface org.bukkit.block.Lockable

`getLock, isLocked, setLock`

### Methods inherited from interface org.bukkit.metadata.Metadatable

`getMetadata, hasMetadata, removeMetadata, setMetadata`

### Methods inherited from interface org.bukkit.Nameable

`customName, customName, getCustomName, setCustomName`

### Methods inherited from interface org.bukkit.block.TileState

`getPersistentDataContainer, isSnapshot`

## Method Details

### getBurnTime

short getBurnTime()
Get burn time.

Returns:
  Burn time

### setBurnTime

void setBurnTime(short burnTime)
Set burn time. A burn time greater than 0 will cause this block to be lit, whilst a time less than 0 will extinguish it.

Parameters:
  `burnTime` - Burn time

### getCookTime

short getCookTime()
Get cook time. This is the amount of time the item has been cooking for.

Returns:
  Cook time

### setCookTime

void setCookTime(short cookTime)
Set cook time. This is the amount of time the item has been cooking for.

Parameters:
  `cookTime` - Cook time

### getCookTimeTotal

int getCookTimeTotal()
Get cook time total. This is the amount of time the item is required to cook for.

Returns:
  Cook time total

### setCookTimeTotal

void setCookTimeTotal(int cookTimeTotal)
Set cook time. This is the amount of time the item is required to cook for.

Parameters:
  `cookTimeTotal` - Cook time total

### getRecipesUsed

@NotNull @NotNull Map<CookingRecipe<?>,Integer> getRecipesUsed()
Get the recipes used in this furnace. Note: These recipes used are reset when the result item is manually taken from the furnace.

Returns:
  An immutable map with the recipes used and the times used

### getCookSpeedMultiplier

double getCookSpeedMultiplier()
Gets the cook speed multiplier that this `Furnace` will cook compared to vanilla.

Returns:
  the multiplier, a value between 0 and 200

### setCookSpeedMultiplier

void setCookSpeedMultiplier(double multiplier)
Sets the speed multiplier that this `Furnace` will cook compared to vanilla.

Parameters:
  `multiplier` - the multiplier to set, a value between 0 and 200
Throws:
  `IllegalArgumentException` - if value is less than 0
  `IllegalArgumentException` - if value is more than 200

### getRecipeUsedCount

int getRecipeUsedCount(@NotNull NamespacedKey furnaceRecipe)
Gets the number of times a recipe has been used since the last player removed items from the result slot. This is used to calculate experience rewards when withdrawing items from furnaces.

Parameters:
  `furnaceRecipe` - the recipe to query the count for
Returns:
  the count or 0 if none found

### hasRecipeUsedCount

boolean hasRecipeUsedCount(@NotNull NamespacedKey furnaceRecipe)
Checks if the recipe has a used count present on this furnace.

Parameters:
  `furnaceRecipe` - the recipe to check if a count exists for
Returns:
  true if there is a positive count, else false

### setRecipeUsedCount

void setRecipeUsedCount(@NotNull CookingRecipe<?> furnaceRecipe, int count)
Sets the number of times a recipe has been used. This is used to calculate experience rewards when withdrawing items from furnaces.

Parameters:
  `furnaceRecipe` - the recipe to set the count for
  `count` - the count, a non-positive number will remove the recipe

### setRecipesUsed

void setRecipesUsed(@NotNull @NotNull Map<CookingRecipe<?>,Integer> recipesUsed)
Sets all recipes used by this furnace.

Parameters:
  `recipesUsed` - the recipes used

### getInventory

@NotNull @NotNull FurnaceInventory getInventory()
Description copied from interface: `Container`
Gets the inventory of the block represented by this block state.

If the block was changed to a different type in the meantime, the returned inventory might no longer be valid.

If this block state is not placed this will return the captured inventory snapshot instead.

Specified by:
  `getInventory` in interface `Container`
Specified by:
  `getInventory` in interface `InventoryHolder`
Returns:
  the inventory

### getSnapshotInventory

@NotNull @NotNull FurnaceInventory getSnapshotInventory()
Description copied from interface: `Container`
Gets the captured inventory snapshot of this container.

The returned inventory is not linked to any block. Any modifications to the returned inventory will not be applied to the block represented by this block state up until `BlockState.update(boolean, boolean)` has been called.

Specified by:
  `getSnapshotInventory` in interface `Container`
Returns:
  the captured inventory snapshot