diff options
author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-05-29 20:02:25 +0300 |
---|---|---|
committer | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-08 04:13:47 +0300 |
commit | 52b7980c44b167612f6e9b864d7b483fba909270 (patch) | |
tree | 5de9986a1eafc437479bf25c70334e2223239f50 | |
parent | cac8a42e71b04833d5b62e8bd48e496b493f1afa (diff) | |
download | Skyblocker-52b7980c44b167612f6e9b864d7b483fba909270.tar.gz Skyblocker-52b7980c44b167612f6e9b864d7b483fba909270.tar.bz2 Skyblocker-52b7980c44b167612f6e9b864d7b483fba909270.zip |
Fix EnchantmentLevelAdder crash in bazaar
2 files changed, 18 insertions, 7 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java index fa19119a..7babe7f2 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java @@ -375,6 +375,7 @@ public class ChocolateFactorySolver extends ContainerSolver { int lastNumber = 0; for (int i = romanNumeral.length() - 1; i >= 0; i--) { char ch = romanNumeral.charAt(i); + if (!romanMap.containsKey(ch)) return 0; decimal = romanMap.get(ch) >= lastNumber ? decimal + romanMap.get(ch) : decimal - romanMap.get(ch); lastNumber = romanMap.get(ch); } 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 babf27d6..44b3c982 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 @@ -21,12 +21,22 @@ public class EnchantmentLevelAdder extends SlotTextAdder { public @Nullable Text getText(Slot slot) { final ItemStack itemStack = slot.getStack(); if (!itemStack.isOf(Items.ENCHANTED_BOOK)) return null; - List<Text> lore = ItemUtils.getLore(itemStack); - if (lore.isEmpty()) return null; - String firstLine = lore.getFirst().getString(); - String romanNumeral = firstLine.substring(firstLine.lastIndexOf(' ') + 1); //+1 because we don't need the space itself - int level = ChocolateFactorySolver.romanToDecimal(romanNumeral); //Temporary line. The method will be moved out later. - if (level == 0) return null; - return Text.literal(String.valueOf(level)).formatted(Formatting.GREEN); + String name = itemStack.getName().getString(); + if (name.equals("Enchanted Book")) { + List<Text> lore = ItemUtils.getLore(itemStack); + if (lore.isEmpty()) return null; + int level = getEnchantLevelFromString(lore.getFirst().getString()); + if (level == 0) return null; + return Text.literal(String.valueOf(level)).formatted(Formatting.GREEN); + } else { //In bazaar, the books have the enchantment name in the name + int level = getEnchantLevelFromString(name); + if (level == 0) return null; + return Text.literal(String.valueOf(level)).formatted(Formatting.GREEN); + } + } + + private static int getEnchantLevelFromString(String str) { + String romanNumeral = str.substring(str.lastIndexOf(' ') + 1); //+1 because we don't need the space itself + return ChocolateFactorySolver.romanToDecimal(romanNumeral); //Temporary line. The method will be moved out later. } } |