diff --git a/patches/api/Fix-ItemFlags.patch b/patches/api/Fix-ItemFlags.patch
new file mode 100644
index 0000000000..10bf6b6e5e
--- /dev/null
+++ b/patches/api/Fix-ItemFlags.patch
@@ -0,0 +1,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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/inventory/ItemFlag.java
++++ b/src/main/java/org/bukkit/inventory/ItemFlag.java
+@@ -0,0 +0,0 @@ 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 {
+ 
+@@ -0,0 +0,0 @@ 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,
+     /**
+@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/inventory/ItemStack.java
++++ b/src/main/java/org/bukkit/inventory/ItemStack.java
+@@ -0,0 +0,0 @@ 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/Fix-ItemFlag-HIDE_DESTROYES-HIDE_PLACED_ON.patch b/patches/server/Fix-ItemFlags.patch
similarity index 88%
rename from patches/server/Fix-ItemFlag-HIDE_DESTROYES-HIDE_PLACED_ON.patch
rename to patches/server/Fix-ItemFlags.patch
index 2a461ae0f9..dc4ad6a7e9 100644
--- a/patches/server/Fix-ItemFlag-HIDE_DESTROYES-HIDE_PLACED_ON.patch
+++ b/patches/server/Fix-ItemFlags.patch
@@ -1,11 +1,37 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Jake Potrebic <jake.m.potrebic@gmail.com>
 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
+--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java
++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaEnchantedBook.java
+@@ -0,0 +0,0 @@ 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
+             }
+         });
+     }
+@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java