Package net.minestom.server.item
Interface ItemStack
- All Superinterfaces:
DataComponent.Holder
,HoverEventSource<HoverEvent.ShowItem>
,TagReadable
public sealed interface ItemStack
extends TagReadable, DataComponent.Holder, HoverEventSource<HoverEvent.ShowItem>
Represents an immutable item to be placed inside
PlayerInventory
,
Inventory
or even on the ground ItemEntity
.
An item stack cannot be null, AIR
should be used instead.
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionstatic final @NotNull ItemStack
Constant AIR item.static final @NotNull BinaryTagSerializer
<ItemStack> static final NetworkBuffer.Type
<ItemStack> static final NetworkBuffer.Type
<ItemStack> -
Method Summary
Modifier and TypeMethodDescriptionint
amount()
default @NotNull HoverEvent
<HoverEvent.ShowItem> asHoverEvent
(@NotNull UnaryOperator<HoverEvent.ShowItem> op) builder()
Converts this itemstack back into a builder (starting from the current state).static @NotNull ItemStack.Builder
@NotNull ItemStack
consume
(int amount) static @NotNull ItemStack
copyWithOperator
(@NotNull ItemStack itemStack, @NotNull UnaryOperator<Component> operator) static @NotNull ItemStack
fromItemNBT
(@NotNull net.kyori.adventure.nbt.CompoundBinaryTag nbtCompound) Converts this item to an NBT tag containing the id (material), count (amount), and components.default <T> @UnknownNullability T
Reads the specified tag.default boolean
isAir()
boolean
@NotNull Material
material()
default int
static @NotNull ItemStack
static @NotNull ItemStack
static @NotNull ItemStack
of
(@NotNull Material material, int amount, @NotNull DataComponentMap components) static @NotNull ItemStack
of
(@NotNull Material material, @NotNull DataComponentMap components) static @NotNull Collection
<Component> textComponents
(@NotNull ItemStack itemStack) @NotNull net.kyori.adventure.nbt.CompoundBinaryTag
Converts this item to an NBT tag containing the id (material), count (amount), and components (diff)@NotNull ItemStack
with
(@NotNull Consumer<@NotNull ItemStack.Builder> consumer) default @NotNull ItemStack
with
(@NotNull DataComponent<Unit> component) Returns a new ItemStack with the givenUnit
component applied.default <T> @NotNull ItemStack
with
(@NotNull DataComponent<T> component, @NotNull UnaryOperator<T> operator) Applies a transformation to the value of a component, only if present.<T> @NotNull ItemStack
with
(@NotNull DataComponent<T> component, T value) Returns a new ItemStack with the given component set to the given value.@NotNull ItemStack
withAmount
(int amount) default @NotNull ItemStack
withAmount
(@NotNull IntUnaryOperator intUnaryOperator) default @NotNull ItemStack
withCustomModelData
(int customModelData) default @NotNull ItemStack
withCustomName
(@NotNull Component customName) default @NotNull ItemStack
withGlowing
(boolean glowing) default @NotNull ItemStack
default @NotNull ItemStack
@NotNull ItemStack
withMaterial
(@NotNull Material material) default @NotNull ItemStack
withMaxStackSize
(int maxStackSize) @NotNull ItemStack
without
(@NotNull DataComponent<?> component) Removes the given component from this item.default @NotNull ItemStack
default <T> @NotNull ItemStack
Methods inherited from interface net.minestom.server.component.DataComponent.Holder
get, get, has
Methods inherited from interface net.kyori.adventure.text.event.HoverEventSource
asHoverEvent
Methods inherited from interface net.minestom.server.tag.TagReadable
hasTag
-
Field Details
-
NETWORK_TYPE
-
STRICT_NETWORK_TYPE
-
NBT_TYPE
-
AIR
Constant AIR item. Should be used instead of 'null'.
-
-
Method Details
-
builder
@Contract(value="_ -> new", pure=true) @NotNull static @NotNull ItemStack.Builder builder(@NotNull @NotNull Material material) -
of
-
of
-
of
@Contract(value="_ ,_ -> new", pure=true) @NotNull static @NotNull ItemStack of(@NotNull @NotNull Material material, @NotNull @NotNull DataComponentMap components) -
of
@Contract(value="_ ,_, _ -> new", pure=true) @NotNull static @NotNull ItemStack of(@NotNull @NotNull Material material, int amount, @NotNull @NotNull DataComponentMap components) -
fromItemNBT
@NotNull static @NotNull ItemStack fromItemNBT(@NotNull @NotNull net.kyori.adventure.nbt.CompoundBinaryTag nbtCompound) Converts this item to an NBT tag containing the id (material), count (amount), and components.- Parameters:
nbtCompound
- The nbt representation of the item
-
material
-
amount
@Contract(pure=true) int amount() -
with
@Contract(value="_, -> new", pure=true) @NotNull @NotNull ItemStack with(@NotNull @NotNull Consumer<@NotNull ItemStack.Builder> consumer) -
withMaterial
-
withAmount
-
withAmount
@Contract(value="_, -> new", pure=true) @NotNull default @NotNull ItemStack withAmount(@NotNull @NotNull IntUnaryOperator intUnaryOperator) -
with
@Contract(value="_, _ -> new", pure=true) @NotNull <T> @NotNull ItemStack with(@NotNull @NotNull DataComponent<T> component, @NotNull T value) Returns a new ItemStack with the given component set to the given value.
Note: this should not be used to remove components, see
without(DataComponent)
. -
with
@Contract(value="_ -> new", pure=true) @NotNull default @NotNull ItemStack with(@NotNull @NotNull DataComponent<Unit> component) Returns a new ItemStack with the givenUnit
component applied.- Parameters:
component
- The unit component to apply- Returns:
- A new ItemStack with the given component applied
-
with
@NotNull default <T> @NotNull ItemStack with(@NotNull @NotNull DataComponent<T> component, @NotNull @NotNull UnaryOperator<T> operator) Applies a transformation to the value of a component, only if present.- Type Parameters:
T
- The component type- Parameters:
component
- The component type to modifyoperator
- The transformation function- Returns:
- A new ItemStack if the component was transformed, otherwise this.
-
without
@Contract(value="_, -> new", pure=true) @NotNull @NotNull ItemStack without(@NotNull @NotNull DataComponent<?> component) Removes the given component from this item. This will explicitly remove the component from the item, as opposed to reverting back to the default.
For example, if
ItemComponent.FOOD
is applied to an apple, and then this method is called, the resulting itemstack will not be a food item at all, as opposed to returning to the default apple food type. Likewise, if this method is called on a default apple, it will no longer be a food item.- Parameters:
component
- The component to remove- Returns:
- A new ItemStack without the given component
-
withCustomName
-
withLore
-
withLore
-
withCustomModelData
@Contract(value="_ -> new", pure=true) @NotNull default @NotNull ItemStack withCustomModelData(int customModelData) -
withGlowing
@Contract(value="_ -> new", pure=true) @NotNull default @NotNull ItemStack withGlowing(boolean glowing) -
withoutExtraTooltip
-
maxStackSize
@Contract(pure=true) default int maxStackSize() -
withMaxStackSize
@Contract(value="_ -> new", pure=true) @NotNull default @NotNull ItemStack withMaxStackSize(int maxStackSize) -
withTag
-
getTag
Description copied from interface:TagReadable
Reads the specified tag.- Specified by:
getTag
in interfaceTagReadable
- Type Parameters:
T
- the tag type- Parameters:
tag
- the tag to read- Returns:
- the read tag, null if not present
-
consume
-
isAir
@Contract(pure=true) default boolean isAir() -
isSimilar
-
builder
Converts this itemstack back into a builder (starting from the current state).- Returns:
- this itemstack, as a builder.
-
toItemNBT
@NotNull @NotNull net.kyori.adventure.nbt.CompoundBinaryTag toItemNBT()Converts this item to an NBT tag containing the id (material), count (amount), and components (diff)- Returns:
- The nbt representation of the item
-
asHoverEvent
@NotNull default @NotNull HoverEvent<HoverEvent.ShowItem> asHoverEvent(@NotNull @NotNull UnaryOperator<HoverEvent.ShowItem> op) - Specified by:
asHoverEvent
in interfaceHoverEventSource<HoverEvent.ShowItem>
-
textComponents
@NotNull static @NotNull Collection<Component> textComponents(@NotNull @NotNull ItemStack itemStack) -
copyWithOperator
@NotNull static @NotNull ItemStack copyWithOperator(@NotNull @NotNull ItemStack itemStack, @NotNull @NotNull UnaryOperator<Component> operator)
-