Package com.destroystokyo.paper.loottable

# Interface LootableInventory

All Superinterfaces:
  `Lootable`

All Known Subinterfaces:
  `Chest`, `Dispenser`, `Dropper`, `Hopper`, `HopperMinecart`, `LootableBlockInventory`, `LootableEntityInventory`, `ShulkerBox`, `StorageMinecart`

public interface LootableInventory extends Lootable
Represents an Inventory that contains a Loot Table associated to it that will automatically fill on first open. A new feature and API is provided to support automatically refreshing the contents of the inventory based on that Loot Table after a configurable amount of time has passed. The behavior of how the Inventory is filled based on the loot table may vary based on Minecraft versions and the Loot Table feature.

## Method Summary

Modifier and Type
Method
Description
`long`
`getLastFilled()`
Gets the timestamp in milliseconds that the Lootable object was last refilled
`@Nullable Long`
`getLastLooted(@NotNull UUID player)`
Gets the timestamp, in milliseconds, of when the player last looted this object
`default @Nullable Long`
`getLastLooted(@NotNull Player player)`
Gets the timestamp, in milliseconds, of when the player last looted this object
`long`
`getNextRefill()`
Gets the timestamp in milliseconds that the Lootable object will refill
`boolean`
`hasBeenFilled()`
Whether or not this object has ever been filled
`boolean`
`hasPendingRefill()`
Returns Whether or not this object has been filled and now has a pending refill
`boolean`
`hasPlayerLooted(@NotNull UUID player)`
Has this player ever looted this block
`default boolean`
`hasPlayerLooted(@NotNull Player player)`
Has this player ever looted this block
`boolean`
`isRefillEnabled()`
Server owners have to enable whether or not an object in a world should refill
`boolean`
`setHasPlayerLooted(@NotNull UUID player, boolean looted)`
Change the state of whether or not a player has looted this block
`default boolean`
`setHasPlayerLooted(@NotNull Player player, boolean looted)`
Change the state of whether or not a player has looted this block
`long`
`setNextRefill(long refillAt)`
Sets the timestamp in milliseconds of the next refill for this object

### Methods inherited from interface org.bukkit.loot.Lootable

`clearLootTable, getLootTable, getSeed, hasLootTable, setLootTable, setLootTable, setSeed`

## Method Details

### isRefillEnabled

boolean isRefillEnabled()
Server owners have to enable whether or not an object in a world should refill

Returns:
  If the world this inventory is currently in has Replenishable Lootables enabled

### hasBeenFilled

boolean hasBeenFilled()
Whether or not this object has ever been filled

Returns:
  Has ever been filled

### hasPlayerLooted

default boolean hasPlayerLooted(@NotNull @NotNull Player player)
Has this player ever looted this block

Parameters:
  `player` - The player to check
Returns:
  Whether or not this player has looted this block

### hasPlayerLooted

boolean hasPlayerLooted(@NotNull @NotNull UUID player)
Has this player ever looted this block

Parameters:
  `player` - The player to check
Returns:
  Whether or not this player has looted this block

### getLastLooted

@Nullable default @Nullable Long getLastLooted(@NotNull @NotNull Player player)
Gets the timestamp, in milliseconds, of when the player last looted this object

Parameters:
  `player` - The player to check
Returns:
  Timestamp last looted, or null if player has not looted this object

### getLastLooted

@Nullable @Nullable Long getLastLooted(@NotNull @NotNull UUID player)
Gets the timestamp, in milliseconds, of when the player last looted this object

Parameters:
  `player` - The player to check
Returns:
  Timestamp last looted, or null if player has not looted this object

### setHasPlayerLooted

default boolean setHasPlayerLooted(@NotNull @NotNull Player player, boolean looted)
Change the state of whether or not a player has looted this block

Parameters:
  `player` - The player to change state for
  `looted` - true to add player to looted list, false to remove
Returns:
  The previous state of whether the player had looted this or not

### setHasPlayerLooted

boolean setHasPlayerLooted(@NotNull @NotNull UUID player, boolean looted)
Change the state of whether or not a player has looted this block

Parameters:
  `player` - The player to change state for
  `looted` - true to add player to looted list, false to remove
Returns:
  The previous state of whether the player had looted this or not

### hasPendingRefill

boolean hasPendingRefill()
Returns Whether or not this object has been filled and now has a pending refill

Returns:
  Has pending refill

### getLastFilled

long getLastFilled()
Gets the timestamp in milliseconds that the Lootable object was last refilled

Returns:
  -1 if it was never refilled, or timestamp in milliseconds

### getNextRefill

long getNextRefill()
Gets the timestamp in milliseconds that the Lootable object will refill

Returns:
  -1 if it is not scheduled for refill, or timestamp in milliseconds

### setNextRefill

long setNextRefill(long refillAt)
Sets the timestamp in milliseconds of the next refill for this object

Parameters:
  `refillAt` - timestamp in milliseconds. -1 to clear next refill
Returns:
  The previous scheduled time to refill, or -1 if was not scheduled