aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRime <81419447+Emirlol@users.noreply.github.com>2024-05-29 20:02:25 +0300
committerRime <81419447+Emirlol@users.noreply.github.com>2024-06-08 04:13:47 +0300
commit52b7980c44b167612f6e9b864d7b483fba909270 (patch)
tree5de9986a1eafc437479bf25c70334e2223239f50
parentcac8a42e71b04833d5b62e8bd48e496b493f1afa (diff)
downloadSkyblocker-52b7980c44b167612f6e9b864d7b483fba909270.tar.gz
Skyblocker-52b7980c44b167612f6e9b864d7b483fba909270.tar.bz2
Skyblocker-52b7980c44b167612f6e9b864d7b483fba909270.zip
Fix EnchantmentLevelAdder crash in bazaar
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/chocolatefactory/ChocolateFactorySolver.java1
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/slottext/adders/EnchantmentLevelAdder.java24
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.
}
}