aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-04-27 14:32:14 -0700
committerJake Potrebic <[email protected]>2024-04-27 14:32:34 -0700
commitb3ea907b778a8d725e65040daf66cf3a9785131c (patch)
tree2340bd573deb24031d60af9702e85be537d0fc31
parent20af7a753c36ef970ccf9e62d9ccfb769cf59e69 (diff)
downloadPaper-b3ea907b778a8d725e65040daf66cf3a9785131c.tar.gz
Paper-b3ea907b778a8d725e65040daf66cf3a9785131c.zip
more ItemFlag fixes
-rw-r--r--patches/api/0472-Fix-ItemFlags.patch66
-rw-r--r--patches/server/1042-Fix-ItemFlags.patch (renamed from patches/server/1042-Fix-ItemFlag-HIDE_DESTROYES-HIDE_PLACED_ON.patch)28
2 files changed, 93 insertions, 1 deletions
diff --git a/patches/api/0472-Fix-ItemFlags.patch b/patches/api/0472-Fix-ItemFlags.patch
new file mode 100644
index 0000000000..2ca79093d4
--- /dev/null
+++ b/patches/api/0472-Fix-ItemFlags.patch
@@ -0,0 +1,66 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Sat, 27 Apr 2024 13:28:17 -0700
+Subject: [PATCH] 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.
+
+diff --git a/src/main/java/org/bukkit/inventory/ItemFlag.java b/src/main/java/org/bukkit/inventory/ItemFlag.java
+index a435f6c8947e4ac50b8c04f37b107055970937dd..92e30c281eab4801298b280bd388a0399212a0c1 100644
+--- a/src/main/java/org/bukkit/inventory/ItemFlag.java
++++ b/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/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
+index 91083a135a7e979e32cbb3531b5ef69b7a28f305..2b465bd3264cccd5203775e1aa99dcfa6226368d 100644
+--- a/src/main/java/org/bukkit/inventory/ItemStack.java
++++ b/src/main/java/org/bukkit/inventory/ItemStack.java
+@@ -572,6 +572,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);
+ }
+ }
diff --git a/patches/server/1042-Fix-ItemFlag-HIDE_DESTROYES-HIDE_PLACED_ON.patch b/patches/server/1042-Fix-ItemFlags.patch
index dd2167c3e8..9c1df3f6e8 100644
--- a/patches/server/1042-Fix-ItemFlag-HIDE_DESTROYES-HIDE_PLACED_ON.patch
+++ b/patches/server/1042-Fix-ItemFlags.patch
@@ -1,11 +1,37 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <[email protected]>
Date: Sat, 27 Apr 2024 12:16:38 -0700
-Subject: [PATCH] Fix ItemFlag HIDE_DESTROYES & HIDE_PLACED_ON
+Subject: [PATCH] Fix ItemFlags
+
+Re-adds missing functionality for HIDE_DESTROYS and
+HIDE_PLACED_ON. Also adds new flag in HIDE_STORED_ENCHANTS
+which was split from HIDE_ADDITIONAL_TOOLTIP.
== AT ==
public net.minecraft.world.item.AdventureModePredicate predicates
+diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java
+index fca0cfba14dd2cc6f24b56eaf269594b2d87fd04..8734f0b777432cd8639094b75a3da1b9595823ed 100644
+--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java
++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java
+@@ -39,7 +39,7 @@ class CraftMetaEnchantedBook extends CraftMetaItem implements EnchantmentStorage
+ getOrEmpty(tag, CraftMetaEnchantedBook.STORED_ENCHANTMENTS).ifPresent((itemEnchantments) -> {
+ this.enchantments = buildEnchantments(itemEnchantments);
+ if (!itemEnchantments.showInTooltip) {
+- this.addItemFlags(ItemFlag.HIDE_ADDITIONAL_TOOLTIP);
++ this.addItemFlags(ItemFlag.HIDE_STORED_ENCHANTS); // Paper - new ItemFlag
+ }
+ });
+ }
+@@ -54,7 +54,7 @@ class CraftMetaEnchantedBook extends CraftMetaItem implements EnchantmentStorage
+ void applyToItem(CraftMetaItem.Applicator itemTag) {
+ super.applyToItem(itemTag);
+
+- this.applyEnchantments(this.enchantments, itemTag, CraftMetaEnchantedBook.STORED_ENCHANTMENTS, ItemFlag.HIDE_ADDITIONAL_TOOLTIP);
++ this.applyEnchantments(this.enchantments, itemTag, CraftMetaEnchantedBook.STORED_ENCHANTMENTS, ItemFlag.HIDE_STORED_ENCHANTS);
+ }
+
+ @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java
index 94e9213414ec08794e875c23c300bfae5dcc877e..940c2c9663657369eda6962728bd37a869209199 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java