Interface LootableInventory

All Superinterfaces:
Lootable
All Known Subinterfaces:
AcaciaChestBoat, BambooChestRaft, Barrel, BirchChestBoat, CherryChestBoat, Chest, ChestBoat, Crafter, DarkOakChestBoat, Dispenser, Dropper, Hopper, HopperMinecart, JungleChestBoat, LootableBlockInventory, LootableEntityInventory, MangroveChestBoat, OakChestBoat, PaleOakChestBoat, ShulkerBox, SpruceChestBoat, 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.

Since:
1.9.4
  • 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
      Since:
      1.9.4
    • hasBeenFilled

      boolean hasBeenFilled()
      Whether this object has ever been filled
      Returns:
      Has ever been filled
      Since:
      1.9.4
    • 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
      Since:
      1.9.4
    • 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
      Since:
      1.20.1
    • 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
      Since:
      1.9.4
    • 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
      Since:
      1.9.4
    • 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
      Since:
      1.9.4
    • 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
      Since:
      1.9.4
    • 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
      Since:
      1.9.4
    • hasPendingRefill

      boolean hasPendingRefill()
      Returns Whether this object has been filled and now has a pending refill
      Returns:
      Has pending refill
      Since:
      1.9.4
    • 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
      Since:
      1.9.4
    • 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
      Since:
      1.9.4
    • 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
      Since:
      1.9.4