Class AbstractInventory

java.lang.Object
net.minestom.server.inventory.AbstractInventory
All Implemented Interfaces:
InventoryClickHandler, Taggable, TagReadable, TagWritable, Viewable
Direct Known Subclasses:
Inventory, PlayerInventory

public abstract sealed class AbstractInventory extends Object implements InventoryClickHandler, Taggable, Viewable permits Inventory, PlayerInventory
Represents an inventory where items can be modified/retrieved.
  • Field Details

  • Constructor Details

    • AbstractInventory

      protected AbstractInventory(int size)
  • Method Details

    • getWindowId

      public abstract byte getWindowId()
      Gets this window id.

      This is the id that the client will send to identify the affected inventory, mostly used by packets.

      Returns:
      the window id
    • getViewers

      @NotNull public @NotNull Set<Player> getViewers()
      Description copied from interface: Viewable
      Gets all the viewers of this viewable element.
      Specified by:
      getViewers in interface Viewable
      Returns:
      A Set containing all the element's viewers
    • addViewer

      public boolean addViewer(@NotNull @NotNull Player player)
      Description copied from interface: Viewable
      Adds a viewer.
      Specified by:
      addViewer in interface Viewable
      Parameters:
      player - the viewer to add
      Returns:
      true if the player has been added, false otherwise (could be because he is already a viewer)
    • removeViewer

      public boolean removeViewer(@NotNull @NotNull Player player)
      Description copied from interface: Viewable
      Removes a viewer.
      Specified by:
      removeViewer in interface Viewable
      Parameters:
      player - the viewer to remove
      Returns:
      true if the player has been removed, false otherwise (could be because he was not a viewer)
    • setItemStack

      public void setItemStack(int slot, @NotNull @NotNull ItemStack itemStack)
      Sets an ItemStack at the specified slot and send relevant update to the viewer(s).
      Parameters:
      slot - the slot to set the item
      itemStack - the item to set
    • setItemStack

      public void setItemStack(int slot, @NotNull @NotNull ItemStack itemStack, boolean sendPacket)
      Sets an ItemStack at the specified slot and send relevant update to the viewer(s).
      Parameters:
      slot - the slot to set the item
      itemStack - the item to set
      sendPacket - whether or not to send packets
    • UNSAFE_itemInsert

      protected void UNSAFE_itemInsert(int slot, @NotNull @NotNull ItemStack item, @NotNull @NotNull ItemStack previous, boolean sendPacket)
    • sendSlotRefresh

      public void sendSlotRefresh(int slot, @NotNull @NotNull ItemStack item, @NotNull @NotNull ItemStack previous)
    • processItemStack

      @NotNull public <T> T processItemStack(@NotNull @NotNull ItemStack itemStack, @NotNull @NotNull TransactionType type, @NotNull @NotNull TransactionOption<T> option)
    • processItemStacks

      @NotNull public <T> @NotNull List<@NotNull T> processItemStacks(@NotNull @NotNull List<@NotNull ItemStack> itemStacks, @NotNull @NotNull TransactionType type, @NotNull @NotNull TransactionOption<T> option)
    • addItemStack

      @NotNull public <T> T addItemStack(@NotNull @NotNull ItemStack itemStack, @NotNull @NotNull TransactionOption<T> option)
      Adds an ItemStack to the inventory and sends relevant update to the viewer(s).
      Parameters:
      itemStack - the item to add
      option - the transaction option
      Returns:
      true if the item has been successfully added, false otherwise
    • addItemStack

      public boolean addItemStack(@NotNull @NotNull ItemStack itemStack)
    • addItemStacks

      @NotNull public <T> @NotNull List<@NotNull T> addItemStacks(@NotNull @NotNull List<@NotNull ItemStack> itemStacks, @NotNull @NotNull TransactionOption<T> option)
      Adds ItemStacks to the inventory and sends relevant updates to the viewer(s).
      Parameters:
      itemStacks - items to add
      option - the transaction option
      Returns:
      the operation results
    • takeItemStack

      @NotNull public <T> T takeItemStack(@NotNull @NotNull ItemStack itemStack, @NotNull @NotNull TransactionOption<T> option)
      Takes an ItemStack from the inventory and sends relevant update to the viewer(s).
      Parameters:
      itemStack - the item to take
      Returns:
      true if the item has been successfully fully taken, false otherwise
    • takeItemStacks

      @NotNull public <T> @NotNull List<@NotNull T> takeItemStacks(@NotNull @NotNull List<@NotNull ItemStack> itemStacks, @NotNull @NotNull TransactionOption<T> option)
      Takes ItemStacks from the inventory and sends relevant updates to the viewer(s).
      Parameters:
      itemStacks - items to take
      Returns:
      the operation results
    • replaceItemStack

      public void replaceItemStack(int slot, @NotNull @NotNull UnaryOperator<@NotNull ItemStack> operator)
    • clear

      public void clear()
      Clears the inventory and send relevant update to the viewer(s).
    • update

      public void update()
      Refreshes the inventory for all viewers.
    • update

      public void update(@NotNull @NotNull Player player)
      Refreshes the inventory for a specific viewer.
      Parameters:
      player - the player to update the inventory for
    • getItemStack

      @NotNull public @NotNull ItemStack getItemStack(int slot)
      Gets the ItemStack at the specified slot.
      Parameters:
      slot - the slot to check
      Returns:
      the item in the slot slot
    • getItemStacks

      @NotNull public @NotNull ItemStack[] getItemStacks()
      Gets all the ItemStack in the inventory.

      Be aware that the returned array does not need to be the original one, meaning that modifying it directly may not work.

      Returns:
      an array containing all the inventory's items
    • getSize

      public int getSize()
      Gets the size of the inventory.
      Returns:
      the inventory's size
    • getInnerSize

      public int getInnerSize()
      Gets the size of the "inner inventory" (which includes only "usable" slots).
      Returns:
      inner inventory's size
    • getInventoryConditions

      @NotNull public @NotNull List<@NotNull InventoryCondition> getInventoryConditions()
      Gets all the InventoryCondition of this inventory.
      Returns:
      a modifiable List containing all the inventory conditions
    • addInventoryCondition

      public void addInventoryCondition(@NotNull @NotNull InventoryCondition inventoryCondition)
      Adds a new InventoryCondition to this inventory.
      Parameters:
      inventoryCondition - the inventory condition to add
    • copyContents

      public void copyContents(@NotNull @NotNull ItemStack[] itemStacks)
      Places all the items of itemStacks into the internal array.
      Parameters:
      itemStacks - the array to copy the content from
      Throws:
      IllegalArgumentException - if the size of the array is not equal to getSize()
      NullPointerException - if itemStacks contains one null element or more
    • tagHandler

      @NotNull public @NotNull TagHandler tagHandler()
      Specified by:
      tagHandler in interface Taggable