Optimised DecayCurse and Repairing

This commit is contained in:
Auxilor
2020-10-29 14:58:31 +00:00
parent 8e7d7288ae
commit d8faccc7c0
2 changed files with 29 additions and 22 deletions

View File

@@ -27,15 +27,14 @@ public final class DecayCurse extends EcoEnchant implements EcoRunnable {
);
}
private final Set<Player> 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);
}
}));
}

View File

@@ -28,13 +28,13 @@ public final class Repairing extends EcoEnchant implements EcoRunnable {
}
private final Set<Player> 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);
}
}));
}