From 412a28a37adce1ff66dca7bf74f05310d83f3e84 Mon Sep 17 00:00:00 2001 From: Jake Potrebic <jake.m.potrebic@gmail.com> Date: Tue, 16 Jul 2024 16:39:57 -0700 Subject: [PATCH] Don't store removed components in multiple places (#11091) --- ...-removed-data-components-in-ItemMeta.patch | 49 ------------------- patches/server/Fix-ItemFlags.patch | 2 +- ...ve-checking-handled-tags-in-itemmeta.patch | 9 ++-- 3 files changed, 4 insertions(+), 56 deletions(-) delete mode 100644 patches/server/Don-t-lose-removed-data-components-in-ItemMeta.patch diff --git a/patches/server/Don-t-lose-removed-data-components-in-ItemMeta.patch b/patches/server/Don-t-lose-removed-data-components-in-ItemMeta.patch deleted file mode 100644 index cbf156a045..0000000000 --- a/patches/server/Don-t-lose-removed-data-components-in-ItemMeta.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jake Potrebic <jake.m.potrebic@gmail.com> -Date: Fri, 26 Apr 2024 21:33:20 -0700 -Subject: [PATCH] Don't lose removed data components in ItemMeta - - -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 -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaItem.java -@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - return this; - } - -+ // Paper start - support removing component types -+ <T> Applicator remove(DataComponentType<T> type) { -+ this.builder.remove(type); -+ return this; -+ } -+ // Paper end - support removing component types -+ - DataComponentPatch build() { - return this.builder.build(); - } -@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - - Set<Map.Entry<DataComponentType<?>, Optional<?>>> keys = tag.entrySet(); - for (Map.Entry<DataComponentType<?>, Optional<?>> key : keys) { -- if (!CraftMetaItem.getHandledTags().contains(key.getKey())) { -+ // Paper start - don't lose unhandled tags -+ if (key.getValue().isEmpty()) { -+ this.unhandledTags.remove(key.getKey()); -+ } else if (!CraftMetaItem.getHandledTags().contains(key.getKey())) { -+ // Paper end - don't lose unhandled tags - key.getValue().ifPresent((value) -> { - this.unhandledTags.set((DataComponentType) key.getKey(), value); - }); -@@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { - } - - for (Map.Entry<DataComponentType<?>, Optional<?>> e : this.unhandledTags.build().entrySet()) { -- e.getValue().ifPresent((value) -> { -+ e.getValue().ifPresentOrElse((value) -> { - itemTag.builder.set((DataComponentType) e.getKey(), value); -- }); -+ }, () -> itemTag.remove(e.getKey())); - } - - for (DataComponentType<?> removed : this.removedTags) { diff --git a/patches/server/Fix-ItemFlags.patch b/patches/server/Fix-ItemFlags.patch index d640951e50..42762d86ba 100644 --- a/patches/server/Fix-ItemFlags.patch +++ b/patches/server/Fix-ItemFlags.patch @@ -112,7 +112,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end + for (Map.Entry<DataComponentType<?>, Optional<?>> e : this.unhandledTags.build().entrySet()) { - e.getValue().ifPresentOrElse((value) -> { + e.getValue().ifPresent((value) -> { itemTag.builder.set((DataComponentType) e.getKey(), value); @@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { diff --git a/patches/server/improve-checking-handled-tags-in-itemmeta.patch b/patches/server/improve-checking-handled-tags-in-itemmeta.patch index d1f23d3efb..0030cb6171 100644 --- a/patches/server/improve-checking-handled-tags-in-itemmeta.patch +++ b/patches/server/improve-checking-handled-tags-in-itemmeta.patch @@ -476,14 +476,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper end - improve checking handled data component types Set<Map.Entry<DataComponentType<?>, Optional<?>>> keys = tag.entrySet(); for (Map.Entry<DataComponentType<?>, Optional<?>> key : keys) { - // Paper start - don't lose unhandled tags - if (key.getValue().isEmpty()) { - this.unhandledTags.remove(key.getKey()); -- } else if (!CraftMetaItem.getHandledTags().contains(key.getKey())) { -+ } else if (!handledTags.contains(key.getKey())) { // Paper - improve checking handled data component types - // Paper end - don't lose unhandled tags +- if (!CraftMetaItem.getHandledTags().contains(key.getKey())) { ++ if (!handledTags.contains(key.getKey())) { // Paper - improve checking handled data component types key.getValue().ifPresent((value) -> { this.unhandledTags.set((DataComponentType) key.getKey(), value); + }); @@ -0,0 +0,0 @@ class CraftMetaItem implements ItemMeta, Damageable, Repairable, BlockDataMeta { this.version = version; }