Adds an option for toggling whether reforging removing enchantments
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
This commit is contained in:
@@ -133,14 +133,19 @@ public class ReforgeSession implements Runnable {
|
||||
itemToReforge.setType(Material.ANVIL);
|
||||
}
|
||||
|
||||
// Add random enchantments
|
||||
//See if a random roll (0-99) is less than extraEnchantmentChance, and add a random enchantment
|
||||
int roll = random.nextInt(100);
|
||||
if (!(roll < config.getExtraEnchantmentChance() &&
|
||||
itemToReforge.getEnchantments().keySet().size() < config.getMaxEnchantments())) {
|
||||
// Abort if randomness isn't on our side, or if max enchantments has been reached
|
||||
return;
|
||||
if (roll < config.getExtraEnchantmentChance() &&
|
||||
itemToReforge.getEnchantments().keySet().size() < config.getMaxEnchantments() &&
|
||||
!ItemHelper.isAnvil(itemToReforge.getType(), false)) {
|
||||
addRandomEnchantment();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a random enchantment to the currently reforged item
|
||||
*/
|
||||
private void addRandomEnchantment() {
|
||||
//Find usable enchantments first
|
||||
List<Enchantment> usableEnchantments = new ArrayList<>();
|
||||
for (String enchantmentName : enchantments) {
|
||||
@@ -176,19 +181,11 @@ public class ReforgeSession implements Runnable {
|
||||
* The method to run when a blacksmith fails re-forging an item
|
||||
*/
|
||||
private void failReforge() {
|
||||
// Remove or downgrade existing enchantments
|
||||
for (Enchantment enchantment : itemToReforge.getEnchantments().keySet()) {
|
||||
if (random.nextBoolean()) {
|
||||
itemToReforge.removeEnchantment(enchantment);
|
||||
} else {
|
||||
if (itemToReforge.getEnchantmentLevel(enchantment) > 1) {
|
||||
itemToReforge.removeEnchantment(enchantment);
|
||||
itemToReforge.addEnchantment(enchantment, 1);
|
||||
}
|
||||
}
|
||||
if (config.getFailRemovesEnchantments()) {
|
||||
removeOrDowngradeEnchantments();
|
||||
}
|
||||
|
||||
// Damage the item
|
||||
//Damage the item
|
||||
short currentItemDurability = ItemHelper.getDurability(itemToReforge);
|
||||
short newDurability = (short) (currentItemDurability + (currentItemDurability * random.nextInt(8)));
|
||||
short maxDurability = itemToReforge.getType().getMaxDurability();
|
||||
@@ -200,6 +197,22 @@ public class ReforgeSession implements Runnable {
|
||||
updateDamage(itemToReforge, maxDurability - newDurability);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes or downgrades all enchantments for the currently reforged item
|
||||
*/
|
||||
private void removeOrDowngradeEnchantments() {
|
||||
//Remove or downgrade existing enchantments
|
||||
for (Enchantment enchantment : itemToReforge.getEnchantments().keySet()) {
|
||||
//Completely remove the enchantment, downgrade it, or keep it if lucky and already level 1
|
||||
if (random.nextBoolean()) {
|
||||
itemToReforge.removeEnchantment(enchantment);
|
||||
} else if (itemToReforge.getEnchantmentLevel(enchantment) > 1) {
|
||||
itemToReforge.removeEnchantment(enchantment);
|
||||
itemToReforge.addEnchantment(enchantment, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the damage done to an item
|
||||
*
|
||||
|
Reference in New Issue
Block a user