aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java13
1 files changed, 8 insertions, 5 deletions
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<Text> 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)));