aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0471-Fix-ItemFlags.patch
blob: 007e003bc3a554a72437f974ae007904bfdea18b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
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 1294f7ce50977dfe72daf535b611386844c205e0..84a7bf0936d35bf42b5ed038d295d5c31740f472 100644
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
@@ -575,6 +575,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);
             }
         }