diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/curse/DecayCurse.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/curse/DecayCurse.java index 14f7f132..9ea222b9 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/curse/DecayCurse.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/curse/DecayCurse.java @@ -18,7 +18,9 @@ import org.bukkit.inventory.ItemStack; import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; +import java.util.stream.Collectors; public final class DecayCurse extends EcoEnchant implements EcoRunnable { public DecayCurse() { @@ -72,16 +74,15 @@ public final class DecayCurse extends EcoEnchant implements EcoRunnable { @Override public void run() { players.forEach((player -> { - Arrays.stream(player.getInventory().getContents()) + List toRepair = Arrays.stream(player.getInventory().getContents()) .filter(ItemStack::hasItemMeta) .filter(item -> item.getItemMeta().hasEnchant(EcoEnchants.DECAY_CURSE)) - .filter(item -> player.getInventory().getItemInOffHand().equals(item)) - .filter(item -> player.getInventory().getItemInMainHand().equals(item)) - .filter(item -> player.getItemOnCursor().equals(item)) - .forEach(item -> { - DurabilityUtils.repairItem(item, amount); - } - ); + .filter(item -> !player.getInventory().getItemInOffHand().equals(item)) + .filter(item -> !player.getInventory().getItemInMainHand().equals(item)) + .filter(item -> !player.getItemOnCursor().equals(item)).collect(Collectors.toList()); + toRepair.forEach(itemStack -> { + DurabilityUtils.damageItemNoBreak(itemStack, amount, player); + }); })); } diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Repairing.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Repairing.java index 570480ce..58d29f86 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Repairing.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Repairing.java @@ -18,7 +18,9 @@ import org.bukkit.inventory.ItemStack; import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; +import java.util.stream.Collectors; public final class Repairing extends EcoEnchant implements EcoRunnable { public Repairing() { @@ -71,18 +73,17 @@ public final class Repairing extends EcoEnchant implements EcoRunnable { @Override public void run() { players.forEach((player -> { - Arrays.stream(player.getInventory().getContents()) + List toRepair = Arrays.stream(player.getInventory().getContents()) .filter(ItemStack::hasItemMeta) .filter(item -> item.getItemMeta().hasEnchant(EcoEnchants.REPAIRING)) - .filter(item -> player.getInventory().getItemInOffHand().equals(item)) - .filter(item -> player.getInventory().getItemInMainHand().equals(item)) - .filter(item -> player.getItemOnCursor().equals(item)) - .forEach(item -> { - int level = EnchantChecks.getItemLevel(item, EcoEnchants.REPAIRING); - int repairAmount = level * multiplier; - DurabilityUtils.repairItem(item, repairAmount); - } - ); + .filter(item -> !player.getInventory().getItemInOffHand().equals(item)) + .filter(item -> !player.getInventory().getItemInMainHand().equals(item)) + .filter(item -> !player.getItemOnCursor().equals(item)).collect(Collectors.toList()); + toRepair.forEach(item -> { + int level = EnchantChecks.getItemLevel(item, EcoEnchants.REPAIRING); + int repairAmount = level * multiplier; + DurabilityUtils.repairItem(item, repairAmount); + }); })); }