From a5fbdfba8cda88dbb04ea278af239ce97c56efbe Mon Sep 17 00:00:00 2001 From: okx-code Date: Wed, 21 Aug 2024 16:00:28 +0100 Subject: [PATCH] Fix old potion exchanges --- .../itemexchange/rules/modifiers/PotionModifier.java | 6 +++++- .../com/untamedears/itemexchange/utility/NBTEncodings.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/PotionModifier.java b/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/PotionModifier.java index 72b36b03b..9b96a2cf0 100644 --- a/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/PotionModifier.java +++ b/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/rules/modifiers/PotionModifier.java @@ -84,7 +84,11 @@ public final class PotionModifier extends ModifierData { @Nonnull public static PotionModifier fromNBT(@Nonnull final NBTCompound nbt) { final var modifier = new PotionModifier(); - modifier.setPotionData(NBTEncodings.decodePotionData(nbt.getCompound(BASE_KEY))); + PotionType type = NBTEncodings.decodePotionData(nbt.getCompound(BASE_KEY)); + if (type == null) { + return null; // "UNCRAFTABLE" potion which is removed in 1.21 + } + modifier.setPotionData(type); modifier.setEffects(Arrays.stream(nbt.getCompoundArray(EFFECTS_KEY)) .map(NBTEncodings::decodePotionEffect) .collect(Collectors.toCollection(ArrayList::new))); diff --git a/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/utility/NBTEncodings.java b/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/utility/NBTEncodings.java index 0cc934d47..3f1f1497a 100644 --- a/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/utility/NBTEncodings.java +++ b/plugins/itemexchange-paper/src/main/java/com/untamedears/itemexchange/utility/NBTEncodings.java @@ -71,7 +71,11 @@ public final class NBTEncodings { if (nbt == null) { return null; } - return PotionType.valueOf(nbt.getString(TYPE_KEY)); + String type = nbt.getString(TYPE_KEY); + if ("UNCRAFTABLE".equals(type)) { + return null; + } + return PotionType.valueOf(type); } // ------------------------------------------------------------