From a76bc04386cdd54648f460fb5084ae8f614c96d9 Mon Sep 17 00:00:00 2001 From: Roch Date: Mon, 24 Oct 2022 16:02:50 +0200 Subject: [PATCH] Issue fixed --- .../net/Indyuce/mmoitems/stat/RepairPower.java | 2 +- .../Indyuce/mmoitems/stat/RepairPowerPercent.java | 2 +- .../net/Indyuce/mmoitems/util/RepairUtils.java | 14 +++++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPower.java b/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPower.java index aa2994d5..062056dd 100644 --- a/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPower.java +++ b/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPower.java @@ -62,6 +62,6 @@ public class RepairPower extends DoubleStat implements ConsumableItemInteraction } // vanilla durability - return RepairUtils.repairPower(playerData, target, consumable, repairPower); + return RepairUtils.repairPower(playerData, target, consumable, -1, repairPower); } } diff --git a/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPowerPercent.java b/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPowerPercent.java index fe8c0dfb..bc5c69d7 100644 --- a/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPowerPercent.java +++ b/MMOItems-API/src/main/java/net/Indyuce/mmoitems/stat/RepairPowerPercent.java @@ -64,6 +64,6 @@ public class RepairPowerPercent extends DoubleStat implements ConsumableItemInte } // vanilla durability - return RepairUtils.repairPower(playerData, target, consumable, repairPower); + return RepairUtils.repairPower(playerData, target, consumable, repairPower, -1); } } diff --git a/MMOItems-API/src/main/java/net/Indyuce/mmoitems/util/RepairUtils.java b/MMOItems-API/src/main/java/net/Indyuce/mmoitems/util/RepairUtils.java index e1648fff..99c8e7d1 100644 --- a/MMOItems-API/src/main/java/net/Indyuce/mmoitems/util/RepairUtils.java +++ b/MMOItems-API/src/main/java/net/Indyuce/mmoitems/util/RepairUtils.java @@ -25,23 +25,27 @@ public class RepairUtils { throw new IllegalStateException("Utility class"); } - public static boolean repairPower(@NotNull PlayerData playerData, @NotNull NBTItem target, @NotNull Consumable consumable, double repairPower) { + public static boolean repairPower(@NotNull PlayerData playerData, @NotNull NBTItem target, @NotNull Consumable consumable, double repairPercentage, int repairUses) { final Player player = playerData.getPlayer(); - if (!target.getBoolean("Unbreakable") && target.getItem().hasItemMeta() && target.getItem().getItemMeta() instanceof Damageable + final boolean percentage = repairPercentage > 0; + if (!target.getBoolean("Unbreakable") + && target.getItem().hasItemMeta() + && target.getItem().getItemMeta() instanceof Damageable && ((Damageable) target.getItem().getItemMeta()).getDamage() > 0) { - RepairItemEvent called = new RepairItemEvent(playerData, consumable.getMMOItem(), target, repairPower); + RepairItemEvent called = percentage ? new RepairItemEvent(playerData, consumable.getMMOItem(), target, repairPercentage) : new RepairItemEvent(playerData, consumable.getMMOItem(), target, repairUses); Bukkit.getPluginManager().callEvent(called); if (called.isCancelled()) return false; + int uses = percentage ? (int) (target.getItem().getType().getMaxDurability() * (repairPercentage / 100)) : repairUses; ItemMeta meta = target.getItem().getItemMeta(); - ((Damageable) meta).setDamage(Math.max(0, ((Damageable) meta).getDamage() - called.getRepaired())); + ((Damageable) meta).setDamage(Math.max(0, ((Damageable) meta).getDamage() - uses)); target.getItem().setItemMeta(meta); Message.REPAIRED_ITEM.format(ChatColor.YELLOW, "#item#", MMOUtils.getDisplayName(target.getItem()), "#amount#", - String.valueOf(called.getRepaired() == -1 ? called.getRepairedPercent() : called.getRepaired())) + String.valueOf(uses)) .send(player); CustomSoundListener.playConsumableSound(consumable.getItem(), player); return true;