From b16bb933e25ffc77e5e6149ca22125ff16931672 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Mon, 11 Jul 2022 17:35:47 +0200 Subject: [PATCH] Prevents an exception caused by enchantment start level being higher than enchantment max level --- src/main/java/net/apunch/blacksmith/ReforgeSession.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/apunch/blacksmith/ReforgeSession.java b/src/main/java/net/apunch/blacksmith/ReforgeSession.java index a4f6d69..e433045 100644 --- a/src/main/java/net/apunch/blacksmith/ReforgeSession.java +++ b/src/main/java/net/apunch/blacksmith/ReforgeSession.java @@ -93,7 +93,12 @@ class ReforgeSession implements Runnable { if (roll < config.getExtraEnchantmentChance() && itemToReforge.getEnchantments().keySet().size() < config.getMaxEnchantments()) { Enchantment enchantment = Enchantment.getByKey(NamespacedKey.fromString(enchantments[random.nextInt(enchantments.length)])); if (Objects.requireNonNull(enchantment).canEnchantItem(itemToReforge)) { - itemToReforge.addEnchantment(enchantment, random.nextInt(enchantment.getMaxLevel() - enchantment.getStartLevel()) + enchantment.getStartLevel()); + int randomBound = enchantment.getMaxLevel() - enchantment.getStartLevel(); + //A workaround for the random method's bound sometimes being negative + if (randomBound >= 0) { + itemToReforge.addEnchantment(enchantment, random.nextInt(randomBound) + + enchantment.getStartLevel()); + } } }