From b3db65d07d129e77f13b433e4d29729d4a971651 Mon Sep 17 00:00:00 2001 From: Intelli Date: Mon, 9 Dec 2024 16:37:29 -0700 Subject: [PATCH] Fixed NotSerializableException when logging items containing attribute data --- .../coreprotect/database/rollback/RollbackUtil.java | 13 ++++++++++--- .../utility/serialize/ItemMetaHandler.java | 4 ++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/coreprotect/database/rollback/RollbackUtil.java b/src/main/java/net/coreprotect/database/rollback/RollbackUtil.java index 921a216..b7ed158 100644 --- a/src/main/java/net/coreprotect/database/rollback/RollbackUtil.java +++ b/src/main/java/net/coreprotect/database/rollback/RollbackUtil.java @@ -346,10 +346,17 @@ public class RollbackUtil extends Lookup { List modifiers = (List) mapData.get("modifiers"); for (Object item : modifiers) { - Map> modifiersMap = (Map>) item; - for (Map.Entry> entry : modifiersMap.entrySet()) { + Map> modifiersMap = (Map>) item; + for (Map.Entry> entry : modifiersMap.entrySet()) { try { - Attribute attribute = entry.getKey(); + Attribute attribute = null; + if (entry.getKey() instanceof Attribute) { + attribute = (Attribute) entry.getKey(); + } + else { + attribute = (Attribute) BukkitAdapter.ADAPTER.getRegistryValue((String) entry.getKey(), Attribute.class); + } + AttributeModifier modifier = AttributeModifier.deserialize(entry.getValue()); itemMeta.addAttributeModifier(attribute, modifier); } diff --git a/src/main/java/net/coreprotect/utility/serialize/ItemMetaHandler.java b/src/main/java/net/coreprotect/utility/serialize/ItemMetaHandler.java index f3e6904..5f7715b 100644 --- a/src/main/java/net/coreprotect/utility/serialize/ItemMetaHandler.java +++ b/src/main/java/net/coreprotect/utility/serialize/ItemMetaHandler.java @@ -125,12 +125,12 @@ public class ItemMetaHandler { if (itemMeta.hasAttributeModifiers()) { for (Map.Entry entry : itemMeta.getAttributeModifiers().entries()) { - Map> attributeList = new HashMap<>(); + Map> attributeList = new HashMap<>(); Attribute attribute = entry.getKey(); AttributeModifier modifier = entry.getValue(); itemMeta.removeAttributeModifier(attribute, modifier); - attributeList.put(attribute, modifier.serialize()); + attributeList.put(BukkitAdapter.ADAPTER.getRegistryKey(attribute), modifier.serialize()); modifiers.add(attributeList); } }