From 4066b9b52b57cfb46b079d0e4a635eb9a6b78d99 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Thu, 29 Aug 2024 19:53:47 +0200 Subject: [PATCH] More cleanup to structured enchantment rewriter --- .../StructuredEnchantmentRewriter.java | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java index 54ca14db..9ac5d311 100644 --- a/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java +++ b/common/src/main/java/com/viaversion/viabackwards/api/rewriters/StructuredEnchantmentRewriter.java @@ -84,8 +84,8 @@ public class StructuredEnchantmentRewriter { final Enchantments enchantments = enchantmentsData.value(); final List loreToAdd = new ArrayList<>(); - boolean updatedLore = false; boolean removedEnchantments = false; + boolean updatedLore = false; final ObjectIterator iterator = enchantments.enchantments().int2IntEntrySet().iterator(); final List updatedIds = new ArrayList<>(); @@ -102,19 +102,19 @@ public class StructuredEnchantmentRewriter { continue; } - removedEnchantments = true; + if (!removedEnchantments) { + // Backup original before doing modifications + final CompoundTag customData = data.computeIfAbsent(StructuredDataKey.CUSTOM_DATA, $ -> new CompoundTag()).value(); + itemRewriter.saveListTag(customData, asTag(enchantments), key.identifier()); + removedEnchantments = true; + } final Tag description = descriptionSupplier.get(id, level); if (description != null && enchantments.showInTooltip()) { - if (!updatedLore) { - // Backup original before doing modifications - final CompoundTag customData = data.computeIfAbsent(StructuredDataKey.CUSTOM_DATA, $ -> new CompoundTag()).value(); - itemRewriter.saveListTag(customData, asTag(enchantments), key.identifier()); - updatedLore = true; - } - loreToAdd.add(description); + updatedLore = true; } + iterator.remove(); } @@ -126,37 +126,37 @@ public class StructuredEnchantmentRewriter { enchantments.add(change.mappedId(), change.level()); } - if (!removedEnchantments) { - return; - } - - // Add glint override if there are no enchantments left - final CompoundTag tag = data.computeIfAbsent(StructuredDataKey.CUSTOM_DATA, $ -> new CompoundTag()).value(); - if (!storedEnchant && enchantments.size() == 0) { - final StructuredData glintOverride = data.getNonEmpty(StructuredDataKey.ENCHANTMENT_GLINT_OVERRIDE); - if (glintOverride != null) { - tag.putBoolean(itemRewriter.nbtTagName("glint"), glintOverride.value()); - } else { - tag.putBoolean(itemRewriter.nbtTagName("noglint"), true); + if (removedEnchantments) { + final CompoundTag tag = data.computeIfAbsent(StructuredDataKey.CUSTOM_DATA, $ -> new CompoundTag()).value(); + if (!storedEnchant && enchantments.size() == 0) { + // Add glint override if there are no enchantments left + final StructuredData glintOverride = data.getNonEmpty(StructuredDataKey.ENCHANTMENT_GLINT_OVERRIDE); + if (glintOverride != null) { + tag.putBoolean(itemRewriter.nbtTagName("glint"), glintOverride.value()); + } else { + tag.putBoolean(itemRewriter.nbtTagName("noglint"), true); + } + data.set(StructuredDataKey.ENCHANTMENT_GLINT_OVERRIDE, true); + } + + if (enchantments.showInTooltip()) { + tag.putBoolean(itemRewriter.nbtTagName("show_" + key.identifier()), true); } - data.set(StructuredDataKey.ENCHANTMENT_GLINT_OVERRIDE, true); } - // Save original lore - final StructuredData loreData = data.getNonEmpty(StructuredDataKey.LORE); - if (loreData != null) { - final List loreList = Arrays.asList(loreData.value()); - itemRewriter.saveGenericTagList(tag, loreList, "lore"); - loreToAdd.addAll(loreList); - } else { - tag.putBoolean(itemRewriter.nbtTagName("nolore"), true); + if (updatedLore) { + // Save original lore + final CompoundTag tag = data.computeIfAbsent(StructuredDataKey.CUSTOM_DATA, $ -> new CompoundTag()).value(); + final StructuredData loreData = data.getNonEmpty(StructuredDataKey.LORE); + if (loreData != null) { + final List loreList = Arrays.asList(loreData.value()); + itemRewriter.saveGenericTagList(tag, loreList, "lore"); + loreToAdd.addAll(loreList); + } else { + tag.putBoolean(itemRewriter.nbtTagName("nolore"), true); + } + data.set(StructuredDataKey.LORE, loreToAdd.toArray(new Tag[0])); } - - if (enchantments.showInTooltip()) { - tag.putBoolean(itemRewriter.nbtTagName("show_" + key.identifier()), true); - } - - data.set(StructuredDataKey.LORE, loreToAdd.toArray(new Tag[0])); } private ListTag asTag(final Enchantments enchantments) {