Interface LootableInventory

All Superinterfaces:
Lootable
All Known Subinterfaces:
Chest, ChestBoat, 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 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