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 a9bd887d..cae34c25 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 @@ -27,15 +27,14 @@ public final class DecayCurse extends EcoEnchant implements EcoRunnable { ); } - private final Set players = new HashSet<>(); - private int amount; + private int amount = EcoEnchants.DECAY_CURSE.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "damage"); @EventHandler public void onItemPickup(EntityPickupItemEvent event) { if(!(event.getEntity() instanceof Player)) return; - refresh(); + refreshPlayer((Player) event.getEntity()); } @EventHandler @@ -52,21 +51,29 @@ public final class DecayCurse extends EcoEnchant implements EcoRunnable { public void onInventoryDrop(EntityDropItemEvent event) { if(!(event.getEntity() instanceof Player)) return; - refresh(); + refreshPlayer((Player) event.getEntity()); } @EventHandler public void onInventoryClick(InventoryClickEvent event) { - refresh(); + if(!(event.getWhoClicked() instanceof Player)) + return; + refreshPlayer((Player) event.getWhoClicked()); } private void refresh() { players.clear(); EcoEnchantsPlugin.getInstance().getServer().getOnlinePlayers().forEach(player -> { - if(Arrays.stream(player.getInventory().getContents()).parallel().anyMatch(item -> EnchantChecks.item(item, EcoEnchants.REPAIRING))) + if(Arrays.stream(player.getInventory().getContents()).parallel().anyMatch(item -> EnchantChecks.item(item, EcoEnchants.DECAY_CURSE))) players.add(player); }); - amount = EcoEnchants.REPAIRING.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "damage"); + amount = EcoEnchants.DECAY_CURSE.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "damage"); + } + + private void refreshPlayer(Player player) { + players.remove(player); + if(Arrays.stream(player.getInventory().getContents()).parallel().anyMatch(item -> EnchantChecks.item(item, EcoEnchants.DECAY_CURSE))) + players.add(player); } @Override @@ -81,10 +88,7 @@ public final class DecayCurse extends EcoEnchant implements EcoRunnable { if(player.getInventory().getItemInOffHand().equals(item)) continue; if(player.getItemOnCursor().equals(item)) continue; - - int damage = EcoEnchants.DECAY_CURSE.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "damage"); - - DurabilityUtils.damageItemNoBreak(item, damage, player); + DurabilityUtils.damageItemNoBreak(item, 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 14bd8e65..fded6804 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 @@ -28,13 +28,13 @@ public final class Repairing extends EcoEnchant implements EcoRunnable { } private final Set players = new HashSet<>(); - private int multiplier; + private int amount = EcoEnchants.REPAIRING.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "damage"); @EventHandler public void onItemPickup(EntityPickupItemEvent event) { if(!(event.getEntity() instanceof Player)) return; - refresh(); + refreshPlayer((Player) event.getEntity()); } @EventHandler @@ -51,12 +51,14 @@ public final class Repairing extends EcoEnchant implements EcoRunnable { public void onInventoryDrop(EntityDropItemEvent event) { if(!(event.getEntity() instanceof Player)) return; - refresh(); + refreshPlayer((Player) event.getEntity()); } @EventHandler public void onInventoryClick(InventoryClickEvent event) { - refresh(); + if(!(event.getWhoClicked() instanceof Player)) + return; + refreshPlayer((Player) event.getWhoClicked()); } private void refresh() { @@ -65,7 +67,13 @@ public final class Repairing extends EcoEnchant implements EcoRunnable { if(Arrays.stream(player.getInventory().getContents()).parallel().anyMatch(item -> EnchantChecks.item(item, EcoEnchants.REPAIRING))) players.add(player); }); - multiplier = EcoEnchants.REPAIRING.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "multiplier"); + amount = EcoEnchants.REPAIRING.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "damage"); + } + + private void refreshPlayer(Player player) { + players.remove(player); + if(Arrays.stream(player.getInventory().getContents()).parallel().anyMatch(item -> EnchantChecks.item(item, EcoEnchants.REPAIRING))) + players.add(player); } @Override @@ -80,12 +88,7 @@ public final class Repairing extends EcoEnchant implements EcoRunnable { if(player.getInventory().getItemInOffHand().equals(item)) continue; if(player.getItemOnCursor().equals(item)) continue; - - int level = EnchantChecks.getItemLevel(item, EcoEnchants.REPAIRING); - int multiplier = EcoEnchants.REPAIRING.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "multiplier"); - int repairAmount = level * multiplier; - - DurabilityUtils.repairItem(item, repairAmount); + DurabilityUtils.repairItem(item, amount); } })); }