Class ItemStack
- All Implemented Interfaces:
- Cloneable,- HoverEventSource<HoverEvent.ShowItem>,- Translatable,- ConfigurationSerializable,- Translatable
 IMPORTANT: An ItemStack is only designed to contain items. Do not
 use this class to encapsulate Materials for which Material.isItem()
 returns false.
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedCreates a new item stack derived from the specified stackDefaults stack size to 1, with no extra data.An item stack with no extra data.Deprecated.Deprecated.this method uses an ambiguous data byte object
- 
Method SummaryModifier and TypeMethodDescriptionadd()Adds 1 to this itemstack.add(int qty) Adds quantity to this itemstack.voidaddEnchantment(@NotNull Enchantment ench, int level) Adds the specifiedEnchantmentto this item stack.voidaddEnchantments(@NotNull Map<Enchantment, Integer> enchantments) Adds the specified enchantments to this item stack.voidaddItemFlags(@NotNull ItemFlag... itemFlags) Set itemflags which should be ignored when rendering a ItemStack in the Client.voidaddUnsafeEnchantment(@NotNull Enchantment ench, int level) Adds the specifiedEnchantmentto this item stack.voidaddUnsafeEnchantments(@NotNull Map<Enchantment, Integer> enchantments) Adds the specified enchantments to this item stack in an unsafe manner.Creates a hover event with value derived from this object.asOne()Clones the itemstack and returns it a single quantity.asQuantity(int qty) Clones the itemstack and returns it as the specified quantitybooleanChecks if this itemstack can repair another.clone()booleanChecks if this ItemStack contains the givenEnchantmentdamage(int amount, LivingEntity livingEntity) Damages this itemstack by the specified amount.deserialize(@NotNull Map<String, Object> args) Required method for configuration serializationdeserializeBytes(@org.jetbrains.annotations.NotNull byte[] bytes) Deserializes this itemstack from raw NBT bytes.Get the formatted display name of theItemStack.<M extends ItemMeta>
 booleanEdits theItemMetaof this stack if the meta is of the specified type.booleanEdits theItemMetaof this stack.enchantWithLevels(@org.jetbrains.annotations.Range(from=1L, to=30L) int levels, boolean allowTreasure, Random random) Randomly enchants a copy of thisItemStackusing the given experience levels.Minecraft updates are converting simple item stacks into more complex NBT oriented Item Stacks.booleanintGets the amount of items in this stackgetData()Deprecated.cast toBlockDataMetaand useBlockDataMeta.getBlockData(Material)shortDeprecated.intGets the level of the specified enchantment on this item stackGets a map containing all enchantments and their levels on this item.Deprecated.ItemStackimplementsTranslatable; use that andComponent.translatable(net.kyori.adventure.translation.Translatable)instead.Get current set itemFlags.Get a copy of this ItemStack'sItemMeta.getLore()Deprecated.in favor oflore()intintGet the maximum stacksize for the material hold in this ItemStack.Gets the item rarity of the itemstack.Deprecated, for removal: This API element is subject to removal in a future version.getType()Gets the type of this iteminthashCode()booleanhasItemFlag(@NotNull ItemFlag flag) Check if the specified flag is present on this item.booleanChecks to see if any meta data has been defined.booleanisRepairableBy(@NotNull ItemStack repairMaterial) Checks if an itemstack can repair this itemstack.booleanThis method is the same as equals, but does not consider stack size (amount).lore()If the item has lore, returns it, else it will return nullvoidSets the lore for this item.intRemoves the specifiedEnchantmentif it exists on this ItemStackvoidremoveItemFlags(@NotNull ItemFlag... itemFlags) Remove specific set of itemFlags.Creates a Map representation of this class.@org.jetbrains.annotations.NotNull byte[]Serializes this itemstack to raw bytes in NBT.voidsetAmount(int amount) Sets the amount of items in this stackvoidsetData(@Nullable MaterialData data) Deprecated.voidsetDurability(short durability) Deprecated.durability is now part of ItemMeta.booleansetItemMeta(@Nullable ItemMeta itemMeta) Set the ItemMeta of this ItemStack.voidDeprecated.in favour oflore(List)voidSets the type of this itemsubtract()Subtracts 1 to this itemstack.subtract(int qty) Subtracts quantity to this itemstack.toString()Gets the translation key.Methods inherited from class java.lang.Objectfinalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface net.kyori.adventure.text.event.HoverEventSourceasHoverEvent
- 
Constructor Details- 
ItemStackprotected ItemStack()
- 
ItemStackDefaults stack size to 1, with no extra data.IMPORTANT: An ItemStack is only designed to contain items. Do not use this class to encapsulate Materials for which Material.isItem()returns false.- Parameters:
- type- item material
 
- 
ItemStackAn item stack with no extra data.IMPORTANT: An ItemStack is only designed to contain items. Do not use this class to encapsulate Materials for which Material.isItem()returns false.- Parameters:
- type- item material
- amount- stack size
 
- 
ItemStackDeprecated.An item stack with the specified damage / durability- Parameters:
- type- item material
- amount- stack size
- damage- durability / damage
 
- 
ItemStack@Deprecated public ItemStack(@NotNull @NotNull Material type, int amount, short damage, @Nullable @Nullable Byte data) Deprecated.this method uses an ambiguous data byte object- Parameters:
- type- the type
- amount- the amount in the stack
- damage- the damage value of the item
- data- the data value or null
 
- 
ItemStackCreates a new item stack derived from the specified stack- Parameters:
- stack- the stack to copy
- Throws:
- IllegalArgumentException- if the specified stack is null or returns an item meta not created by the item factory
 
 
- 
- 
Method Details- 
getTypeGets the type of this item- Returns:
- Type of the items in this stack
 
- 
setTypeSets the type of this itemNote that in doing so you will reset the MaterialData for this stack. IMPORTANT: An ItemStack is only designed to contain items. Do not use this class to encapsulate Materials for which Material.isItem()returns false.- Parameters:
- type- New type to set the items in this stack to
 
- 
getAmountpublic int getAmount()Gets the amount of items in this stack- Returns:
- Amount of items in this stack
 
- 
setAmountpublic void setAmount(int amount) Sets the amount of items in this stack- Parameters:
- amount- New amount of items in this stack
 
- 
getDataDeprecated.cast toBlockDataMetaand useBlockDataMeta.getBlockData(Material)Gets the MaterialData for this stack of items- Returns:
- MaterialData for this item
 
- 
setDataDeprecated.Sets the MaterialData for this stack of items- Parameters:
- data- New MaterialData for this item
 
- 
setDurabilityDeprecated.durability is now part of ItemMeta. To avoid confusion and misuse,getItemMeta(),setItemMeta(ItemMeta)andDamageable.setDamage(int)should be used instead. This is because any call to this method will be overwritten by subsequent setting of ItemMeta which was created before this call.Sets the durability of this item- Parameters:
- durability- Durability of this item
 
- 
getDurabilityDeprecated.Gets the durability of this item- Returns:
- Durability of this item
 
- 
getMaxStackSizepublic int getMaxStackSize()Get the maximum stacksize for the material hold in this ItemStack. (Returns -1 if it has no idea)- Returns:
- The maximum you can stack this material to.
 
- 
toString
- 
equals
- 
isSimilarThis method is the same as equals, but does not consider stack size (amount).- Parameters:
- stack- the item stack to compare to
- Returns:
- true if the two stacks are equal, ignoring the amount
 
- 
clone
- 
hashCodepublic int hashCode()
- 
containsEnchantmentChecks if this ItemStack contains the givenEnchantment- Parameters:
- ench- Enchantment to test
- Returns:
- True if this has the given enchantment
 
- 
getEnchantmentLevelGets the level of the specified enchantment on this item stack- Parameters:
- ench- Enchantment to check
- Returns:
- Level of the enchantment, or 0
 
- 
getEnchantmentsGets a map containing all enchantments and their levels on this item.- Returns:
- Map of enchantments.
 
- 
addEnchantmentsAdds the specified enchantments to this item stack.This method is the same as calling addEnchantment(org.bukkit.enchantments.Enchantment, int)for each element of the map.- Parameters:
- enchantments- Enchantments to add
- Throws:
- IllegalArgumentException- if the specified enchantments is null
- IllegalArgumentException- if any specific enchantment or level is null. Warning: Some enchantments may be added before this exception is thrown.
 
- 
addEnchantmentAdds the specifiedEnchantmentto this item stack.If this item stack already contained the given enchantment (at any level), it will be replaced. - Parameters:
- ench- Enchantment to add
- level- Level of the enchantment
- Throws:
- IllegalArgumentException- if enchantment null, or enchantment is not applicable
 
- 
addUnsafeEnchantmentsAdds the specified enchantments to this item stack in an unsafe manner.This method is the same as calling addUnsafeEnchantment(org.bukkit.enchantments.Enchantment, int)for each element of the map.- Parameters:
- enchantments- Enchantments to add
 
- 
addUnsafeEnchantmentAdds the specifiedEnchantmentto this item stack.If this item stack already contained the given enchantment (at any level), it will be replaced. This method is unsafe and will ignore level restrictions or item type. Use at your own discretion. - Parameters:
- ench- Enchantment to add
- level- Level of the enchantment
 
- 
removeEnchantmentRemoves the specifiedEnchantmentif it exists on this ItemStack- Parameters:
- ench- Enchantment to remove
- Returns:
- Previous level, or 0
 
- 
serializeDescription copied from interface:ConfigurationSerializableCreates a Map representation of this class.This class must provide a method to restore this class, as defined in the ConfigurationSerializableinterface javadocs.- Specified by:
- serializein interface- ConfigurationSerializable
- Returns:
- Map containing the current state of this class
 
- 
deserializeRequired method for configuration serialization- Parameters:
- args- map to deserialize
- Returns:
- deserialized item stack
- See Also:
 
- 
editMetaEdits theItemMetaof this stack.The Consumermust only interact with this stack'sItemMetathrough the providedItemMetainstance. Calling this method or any other meta-related method of theItemStackclass (such asgetItemMeta(),addItemFlags(ItemFlag...),lore(), etc.) from inside the consumer is disallowed and will produce undefined results or exceptions.- Parameters:
- consumer- the meta consumer
- Returns:
- trueif the edit was successful,- falseotherwise
 
- 
editMetapublic <M extends ItemMeta> boolean editMeta(@NotNull @NotNull Class<M> metaClass, @NotNull Consumer<@NotNull ? super M> consumer) Edits theItemMetaof this stack if the meta is of the specified type.The Consumermust only interact with this stack'sItemMetathrough the providedItemMetainstance. Calling this method or any other meta-related method of theItemStackclass (such asgetItemMeta(),addItemFlags(ItemFlag...),lore(), etc.) from inside the consumer is disallowed and will produce undefined results or exceptions.- Type Parameters:
- M- the meta type
- Parameters:
- metaClass- the type of meta to edit
- consumer- the meta consumer
- Returns:
- trueif the edit was successful,- falseotherwise
 
- 
getItemMetaGet a copy of this ItemStack'sItemMeta.- Returns:
- a copy of the current ItemStack's ItemData
 
- 
hasItemMetapublic boolean hasItemMeta()Checks to see if any meta data has been defined.- Returns:
- Returns true if some meta data has been set for this item
 
- 
setItemMetaSet the ItemMeta of this ItemStack.- Parameters:
- itemMeta- new ItemMeta, or null to indicate meta data be cleared.
- Returns:
- True if successfully applied ItemMeta, see ItemFactory.isApplicable(ItemMeta, ItemStack)
- Throws:
- IllegalArgumentException- if the item meta was not created by the- ItemFactory
 
- 
getTranslationKeyDeprecated, for removal: This API element is subject to removal in a future version.Description copied from interface:TranslatableGet the translation key, suitable for use in a translation component.- Specified by:
- getTranslationKeyin interface- Translatable
- Returns:
- the translation key
 
- 
enchantWithLevels@NotNull public @NotNull ItemStack enchantWithLevels(@org.jetbrains.annotations.Range(from=1L, to=30L) int levels, boolean allowTreasure, @NotNull Random random) Randomly enchants a copy of thisItemStackusing the given experience levels.If this ItemStack is already enchanted, the existing enchants will be removed before enchanting. Levels must be in range [1, 30].- Parameters:
- levels- levels to use for enchanting
- allowTreasure- whether to allow enchantments where- Enchantment.isTreasure()returns true
- random-- Randominstance to use for enchanting
- Returns:
- enchanted copy of the provided ItemStack
- Throws:
- IllegalArgumentException- on bad arguments
 
- 
asHoverEvent@NotNull public HoverEvent<HoverEvent.ShowItem> asHoverEvent(@NotNull UnaryOperator<HoverEvent.ShowItem> op) Description copied from interface:net.kyori.adventure.text.event.HoverEventSourceCreates a hover event with value derived from this object.The event value will be passed through the provided callback to allow transforming the original value of the event. - Specified by:
- asHoverEventin interface- HoverEventSource<HoverEvent.ShowItem>
- Parameters:
- op- transformation on value
- Returns:
- a hover event
 
- 
displayNameGet the formatted display name of theItemStack.- Returns:
- display name of the ItemStack
 
- 
ensureServerConversionsMinecraft updates are converting simple item stacks into more complex NBT oriented Item Stacks. Use this method to ensure any desired data conversions are processed. The input itemstack will not be the same as the returned itemstack.- Returns:
- A potentially Data Converted ItemStack
 
- 
deserializeBytes@NotNull public static @NotNull ItemStack deserializeBytes(@NotNull @org.jetbrains.annotations.NotNull byte[] bytes) Deserializes this itemstack from raw NBT bytes. NBT is safer for data migrations as it will use the built in data converter instead of bukkits dangerous serialization system. This expects that the DataVersion was stored on the root of the Compound, as saved from theserializeAsBytes()API returned.- Parameters:
- bytes- bytes representing an item in NBT
- Returns:
- ItemStack migrated to this version of Minecraft if needed.
 
- 
serializeAsBytesSerializes this itemstack to raw bytes in NBT. NBT is safer for data migrations as it will use the built in data converter instead of bukkits dangerous serialization system.- Returns:
- bytes representing this item in NBT.
 
- 
getI18NDisplayNameDeprecated.ItemStackimplementsTranslatable; use that andComponent.translatable(net.kyori.adventure.translation.Translatable)instead.Gets the Display name as seen in the Client. Currently the server only supports the English language. To override this, You must replace the language file embedded in the server jar.- Returns:
- Display name of Item
 
- 
getMaxItemUseDurationpublic int getMaxItemUseDuration()
- 
asOneClones the itemstack and returns it a single quantity.- Returns:
- The new itemstack with 1 quantity
 
- 
asQuantityClones the itemstack and returns it as the specified quantity- Parameters:
- qty- The quantity of the cloned item
- Returns:
- The new itemstack with specified quantity
 
- 
addAdds 1 to this itemstack. Will not go over the items max stack size.- Returns:
- The same item (not a clone)
 
- 
addAdds quantity to this itemstack. Will not go over the items max stack size.- Parameters:
- qty- The amount to add
- Returns:
- The same item (not a clone)
 
- 
subtractSubtracts 1 to this itemstack. Going to 0 or less will invalidate the item.- Returns:
- The same item (not a clone)
 
- 
subtractSubtracts quantity to this itemstack. Going to 0 or less will invalidate the item.- Parameters:
- qty- The amount to add
- Returns:
- The same item (not a clone)
 
- 
getLoreDeprecated.in favor oflore()If the item has lore, returns it, else it will return null- Returns:
- The lore, or null
 
- 
loreIf the item has lore, returns it, else it will return null- Returns:
- The lore, or null
 
- 
setLoreDeprecated.in favour oflore(List)Sets the lore for this item. Removes lore when given null.- Parameters:
- lore- the lore that will be set
 
- 
loreSets the lore for this item. Removes lore when given null.- Parameters:
- lore- the lore that will be set
 
- 
addItemFlagsSet itemflags which should be ignored when rendering a ItemStack in the Client. This Method does silently ignore double set itemFlags.- Parameters:
- itemFlags- The hideflags which shouldn't be rendered
 
- 
removeItemFlagsRemove specific set of itemFlags. This tells the Client it should render it again. This Method does silently ignore double removed itemFlags.- Parameters:
- itemFlags- Hideflags which should be removed
 
- 
getItemFlagsGet current set itemFlags. The collection returned is unmodifiable.- Returns:
- A set of all itemFlags set
 
- 
hasItemFlagCheck if the specified flag is present on this item.- Parameters:
- flag- the flag to check
- Returns:
- if it is present
 
- 
translationKeyGets the translation key.This is not the same as getting the translation key for the material of this itemstack. - Specified by:
- translationKeyin interface- Translatable
- Returns:
- the translation key
 
- 
getRarityGets the item rarity of the itemstack. The rarity can change based on enchantements.- Returns:
- the itemstack rarity
 
- 
isRepairableByChecks if an itemstack can repair this itemstack. Returns false ifthisorrepairMaterial's type is not an item (Material.isItem()).- Parameters:
- repairMaterial- the repair material
- Returns:
- true if it is repairable by, false if not
 
- 
canRepairChecks if this itemstack can repair another. Returns false ifthisortoBeRepaired's type is not an item (Material.isItem()).- Parameters:
- toBeRepaired- the itemstack to be repaired
- Returns:
- true if it can repair, false if not
 
- 
damageDamages this itemstack by the specified amount. This runs all logic associated with damaging an itemstack like events and stat changes.- Parameters:
- amount- the amount of damage to do
- livingEntity- the entity related to the damage
- Returns:
- the damaged itemstack or an empty one if it broke. May return the same instance of ItemStack
- See Also:
 
 
- 
setDurability(short)