java.lang.Object
net.minestom.server.inventory.AbstractInventory
- All Implemented Interfaces:
EventHandler<InventoryEvent>
,InventoryClickHandler
,Taggable
,TagReadable
,TagWritable
,Viewable
- Direct Known Subclasses:
Inventory
,PlayerInventory
public abstract sealed class AbstractInventory
extends Object
implements InventoryClickHandler, Taggable, Viewable, EventHandler<InventoryEvent>
permits Inventory, PlayerInventory
Represents an inventory where items can be modified/retrieved.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final InventoryClickProcessor
protected final ItemStack[]
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
addItemStack
(ItemStack itemStack) <T> T
addItemStack
(ItemStack itemStack, TransactionOption<T> option) Adds anItemStack
to the inventory and sends relevant update to the viewer(s).<T> List
<T> addItemStacks
(List<ItemStack> itemStacks, TransactionOption<T> option) AddsItemStack
s to the inventory and sends relevant updates to the viewer(s).boolean
Adds a viewer.void
clear()
Clears the inventory and send relevant update to the viewer(s).void
copyContents
(ItemStack[] itemStacks) Places all the items ofitemStacks
into the internal array.int
Gets the size of the "inner inventory" (which includes only "usable" slots).getItemStack
(int slot) Gets theItemStack
at the specified slot.Gets all theItemStack
in the inventory.int
getSize()
Gets the size of the inventory.Gets all the viewers of this viewable element.abstract byte
Gets this window id.<T> T
processItemStack
(ItemStack itemStack, TransactionType type, TransactionOption<T> option) <T> List
<T> processItemStacks
(List<ItemStack> itemStacks, TransactionType type, TransactionOption<T> option) boolean
removeViewer
(Player player) Removes a viewer.void
replaceItemStack
(int slot, UnaryOperator<ItemStack> operator) void
sendSlotRefresh
(int slot, ItemStack item) void
setItemStack
(int slot, ItemStack itemStack) Sets anItemStack
at the specified slot and send relevant update to the viewer(s).void
setItemStack
(int slot, ItemStack itemStack, boolean sendPacket) Sets anItemStack
at the specified slot and send relevant update to the viewer(s).<T> T
takeItemStack
(ItemStack itemStack, TransactionOption<T> option) Takes anItemStack
from the inventory and sends relevant update to the viewer(s).<T> List
<T> takeItemStacks
(List<ItemStack> itemStacks, TransactionOption<T> option) TakesItemStack
s from the inventory and sends relevant updates to the viewer(s).protected void
UNSAFE_itemInsert
(int slot, ItemStack item, ItemStack previous, boolean sendPacket) void
update()
Refreshes the inventory for all viewers.void
Refreshes the inventory for a specific viewer.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.minestom.server.inventory.InventoryClickHandler
callClickEvent, changeHeld, doubleClick, dragging, drop, handleClick, leftClick, middleClick, rightClick, shiftClick
Methods inherited from interface net.minestom.server.tag.Taggable
getAndSetTag, getAndUpdateTag, getTag, hasTag, removeTag, setTag, updateAndGetTag, updateTag
Methods inherited from interface net.minestom.server.Viewable
getViewersAsAudience, getViewersAsAudiences, isViewer, sendPacketsToViewers, sendPacketsToViewers, sendPacketToViewers, sendPacketToViewersAndSelf
-
Field Details
-
itemStacks
-
clickProcessor
-
viewers
-
unmodifiableViewers
-
-
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
Description copied from interface:Viewable
Gets all the viewers of this viewable element.- Specified by:
getViewers
in interfaceViewable
- Returns:
- A Set containing all the element's viewers
-
addViewer
Description copied from interface:Viewable
Adds a viewer. -
removeViewer
Description copied from interface:Viewable
Removes a viewer.- Specified by:
removeViewer
in interfaceViewable
- 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
Sets anItemStack
at the specified slot and send relevant update to the viewer(s).- Parameters:
slot
- the slot to set the itemitemStack
- the item to set
-
setItemStack
Sets anItemStack
at the specified slot and send relevant update to the viewer(s).- Parameters:
slot
- the slot to set the itemitemStack
- the item to setsendPacket
- whether or not to send packets
-
UNSAFE_itemInsert
-
sendSlotRefresh
-
processItemStack
public <T> T processItemStack(ItemStack itemStack, TransactionType type, TransactionOption<T> option) -
processItemStacks
public <T> List<T> processItemStacks(List<ItemStack> itemStacks, TransactionType type, TransactionOption<T> option) -
addItemStack
Adds anItemStack
to the inventory and sends relevant update to the viewer(s).- Parameters:
itemStack
- the item to addoption
- the transaction option- Returns:
- true if the item has been successfully added, false otherwise
-
addItemStack
-
addItemStacks
AddsItemStack
s to the inventory and sends relevant updates to the viewer(s).- Parameters:
itemStacks
- items to addoption
- the transaction option- Returns:
- the operation results
-
takeItemStack
Takes anItemStack
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
TakesItemStack
s from the inventory and sends relevant updates to the viewer(s).- Parameters:
itemStacks
- items to take- Returns:
- the operation results
-
replaceItemStack
-
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
Refreshes the inventory for a specific viewer.- Parameters:
player
- the player to update the inventory for
-
getItemStack
Gets theItemStack
at the specified slot.- Parameters:
slot
- the slot to check- Returns:
- the item in the slot
slot
-
getItemStacks
Gets all theItemStack
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
-
copyContents
Places all the items ofitemStacks
into the internal array.- Parameters:
itemStacks
- the array to copy the content from- Throws:
IllegalArgumentException
- if the size of the array is not equal togetSize()
NullPointerException
- ifitemStacks
contains one null element or more
-
tagHandler
- Specified by:
tagHandler
in interfaceTaggable
-
eventNode
- Specified by:
eventNode
in interfaceEventHandler<InventoryEvent>
-