aboutsummaryrefslogtreecommitdiffhomepage
path: root/paper-api
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-04-27 13:28:17 -0700
committerJake Potrebic <[email protected]>2024-04-27 13:28:17 -0700
commitb0a676ba62298954fb641c78bafe327f3cb294a6 (patch)
tree776d808dec24d23e9d0c9956c0591bfbbefbfdb6 /paper-api
parent6fedaecd54d1dca67542115e5e90ca1014b79db6 (diff)
downloadPaper-b0a676ba62298954fb641c78bafe327f3cb294a6.tar.gz
Paper-b0a676ba62298954fb641c78bafe327f3cb294a6.zip
Fix ItemFlags
Adds new flag in HIDE_STORED_ENCHANTS which was split from HIDE_ADDITIONAL_INFO. Adds a migration to account for this, adding the new flag if the itemstack is old and had the old flag.
Diffstat (limited to 'paper-api')
-rw-r--r--paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java13
-rw-r--r--paper-api/src/main/java/org/bukkit/inventory/ItemStack.java7
2 files changed, 18 insertions, 2 deletions
diff --git a/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java b/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java
index 5b8dac777b..1af15fd327 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/ItemFlag.java
@@ -2,6 +2,8 @@ package org.bukkit.inventory;
/**
* A ItemFlag can hide some Attributes from ItemStacks
+ * @apiNote Setting these without also setting the data they are hiding
+ * may not result in the item flag being persisted in the ItemMeta/ItemStack.
*/
public enum ItemFlag {
@@ -27,7 +29,8 @@ public enum ItemFlag {
HIDE_PLACED_ON,
/**
* Setting to show/hide potion effects, book and firework information, map
- * tooltips, patterns of banners, and enchantments of enchanted books.
+ * tooltips, patterns of banners.
+ * @see #HIDE_STORED_ENCHANTS HIDE_STORED_ENCHANTS for hiding stored enchants (like on enchanted books)
*/
HIDE_ADDITIONAL_TOOLTIP,
/**
@@ -37,7 +40,13 @@ public enum ItemFlag {
/**
* Setting to show/hide armor trim from armor.
*/
- HIDE_ARMOR_TRIM;
+ HIDE_ARMOR_TRIM,
+ /**
+ * Setting to show/hide stored enchants on an item, such as enchantments
+ * on an enchanted book.
+ */
+ HIDE_STORED_ENCHANTS,
+ ;
// Paper start
/**
* Setting to show/hide item-specific information, including, but not limited to:
diff --git a/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java b/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java
index 4bb051af04..10b913490e 100644
--- a/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/paper-api/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -588,6 +588,13 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
Object raw = args.get("meta");
if (raw instanceof ItemMeta) {
((ItemMeta) raw).setVersion(version);
+ // Paper start - for pre 1.20.5 itemstacks, add HIDE_STORED_ENCHANTS flag if HIDE_ADDITIONAL_TOOLTIP is set
+ if (version < 3837) { // 1.20.5
+ if (((ItemMeta) raw).hasItemFlag(ItemFlag.HIDE_ADDITIONAL_TOOLTIP)) {
+ ((ItemMeta) raw).addItemFlags(ItemFlag.HIDE_STORED_ENCHANTS);
+ }
+ }
+ // Paper end
result.setItemMeta((ItemMeta) raw);
}
}