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.

  • Field Details

  • Method Details

    • builder

      @Contract(value="_ -> new", pure=true) @NotNull static @NotNull ItemStack.Builder builder(@NotNull @NotNull Material material)
    • of

      @Contract(value="_ -> new", pure=true) @NotNull static @NotNull ItemStack of(@NotNull @NotNull Material material)
    • of

      @Contract(value="_ ,_ -> new", pure=true) @NotNull static @NotNull ItemStack of(@NotNull @NotNull Material material, int amount)
    • 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

      @Contract(pure=true) @NotNull @NotNull Material 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

      @Contract(value="_, -> new", pure=true) @NotNull @NotNull ItemStack withMaterial(@NotNull @NotNull Material material)
    • withAmount

      @Contract(value="_, -> new", pure=true) @NotNull @NotNull ItemStack withAmount(int amount)
    • 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 given Unit 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 modify
      operator - 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

      @Contract(value="_, -> new", pure=true) @NotNull default @NotNull ItemStack withCustomName(@NotNull @NotNull Component customName)
    • withLore

      @Contract(value="_, -> new", pure=true) @NotNull default @NotNull ItemStack withLore(@NotNull @NotNull Component... lore)
    • withLore

      @Contract(value="_, -> new", pure=true) @NotNull default @NotNull ItemStack withLore(@NotNull @NotNull List<Component> lore)
    • 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

      @Contract(value="-> new", pure=true) @NotNull default @NotNull ItemStack withoutExtraTooltip()
    • maxStackSize

      @Contract(pure=true) default int maxStackSize()
    • withMaxStackSize

      @Contract(value="_ -> new", pure=true) @NotNull default @NotNull ItemStack withMaxStackSize(int maxStackSize)
    • withTag

      @Contract(value="_, _ -> new", pure=true) @NotNull default <T> @NotNull ItemStack withTag(@NotNull @NotNull Tag<T> tag, @Nullable T value)
    • getTag

      @Contract(pure=true) default <T> @UnknownNullability T getTag(@NotNull @NotNull Tag<T> tag)
      Description copied from interface: TagReadable
      Reads the specified tag.
      Specified by:
      getTag in interface TagReadable
      Type Parameters:
      T - the tag type
      Parameters:
      tag - the tag to read
      Returns:
      the read tag, null if not present
    • consume

      @Contract(value="_, -> new", pure=true) @NotNull @NotNull ItemStack consume(int amount)
    • isAir

      @Contract(pure=true) default boolean isAir()
    • isSimilar

      @Contract(pure=true) boolean isSimilar(@NotNull @NotNull ItemStack itemStack)
    • builder

      @NotNull ItemStack.Builder 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 interface HoverEventSource<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)