From 4442a6589173484581dbfaec811f2ec2d5ac6de4 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Thu, 6 Jun 2024 15:57:12 +0300 Subject: Refactor EnchantmentLevelAdder to use nbt rather than lore --- .../item/slottext/adders/EnchantmentLevelAdder.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock/item') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java index 46be2a7f..4131d07c 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java @@ -6,6 +6,8 @@ import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.RomanNumerals; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtElement; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; import net.minecraft.util.Formatting; @@ -24,12 +26,13 @@ public class EnchantmentLevelAdder extends SlotTextAdder { if (!itemStack.isOf(Items.ENCHANTED_BOOK)) return List.of(); String name = itemStack.getName().getString(); if (name.equals("Enchanted Book")) { - List lore = ItemUtils.getLore(itemStack); - if (lore.isEmpty()) return List.of(); - int level = getEnchantLevelFromString(lore.getFirst().getString()); - if (level == 0) return List.of(); + NbtCompound nbt = ItemUtils.getCustomData(itemStack); + if (nbt.isEmpty() || !nbt.contains("enchantments", NbtElement.COMPOUND_TYPE)) return List.of(); + NbtCompound enchantments = nbt.getCompound("enchantments"); + if (enchantments.getSize() != 1) return List.of(); //Only makes sense to display the level when there's one enchant. + int level = enchantments.getInt(enchantments.getKeys().iterator().next()); return List.of(PositionedText.BOTTOM_LEFT(Text.literal(String.valueOf(level)).formatted(Formatting.GREEN))); - } else { //In bazaar, the books have the enchantment name in the name + } else { //In bazaar, the books have the enchantment level in the name int level = getEnchantLevelFromString(name); if (level == 0) return List.of(); return List.of(PositionedText.BOTTOM_LEFT(Text.literal(String.valueOf(level)).formatted(Formatting.GREEN))); -- cgit