Interface LootableInventory

All Superinterfaces:
Lootable
All Known Subinterfaces:
Barrel, Chest, ChestBoat, Crafter, Dispenser, Dropper, Hopper, HopperMinecart, LootableBlockInventory, LootableEntityInventory, ShulkerBox, StorageMinecart

@NullMarked 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 an object in a world should refill
      Returns:
      If the world this inventory is currently in has Replenishable Lootables enabled
    • hasBeenFilled

      boolean hasBeenFilled()
      Whether this object has ever been filled
      Returns:
      Has ever been filled
    • hasPlayerLooted

      default boolean hasPlayerLooted(Player player)
      Has this player ever looted this block
      Parameters:
      player - The player to check
      Returns:
      Whether this player has looted this block
    • canPlayerLoot

      boolean canPlayerLoot(UUID player)
      Checks if this player can loot this block. Takes into account the "restrict player reloot" settings
      Parameters:
      player - the player to check
      Returns:
      Whether this player can loot this block
    • hasPlayerLooted

      boolean hasPlayerLooted(UUID player)
      Has this player ever looted this block
      Parameters:
      player - The player to check
      Returns:
      Whether this player has looted this block
    • getLastLooted

      default @Nullable Long getLastLooted(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 Long getLastLooted(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(Player player, boolean looted)
      Change the state of whether 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(UUID player, boolean looted)
      Change the state of whether 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 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