diff --git a/src/main/java/com/alttd/fishingevent/gui/windows/UpgradeWindow.java b/src/main/java/com/alttd/fishingevent/gui/windows/UpgradeWindow.java index 6026fde..1f7d6e4 100644 --- a/src/main/java/com/alttd/fishingevent/gui/windows/UpgradeWindow.java +++ b/src/main/java/com/alttd/fishingevent/gui/windows/UpgradeWindow.java @@ -73,7 +73,7 @@ public class UpgradeWindow extends GUI { for (RepairData repairData : repairDataList) { ItemStack itemStack = new ItemStack(repairData.material(), 1); ItemMeta itemMeta = itemStack.getItemMeta(); - itemMeta.displayName(MiniMessage.miniMessage().deserialize("Repair % for points", TagResolver.resolver( + itemMeta.displayName(MiniMessage.miniMessage().deserialize("Repair up to % for points", TagResolver.resolver( Placeholder.parsed("percent", String.valueOf(repairData.percentage())), Placeholder.parsed("points", String.valueOf(repairData.cost())) ))); @@ -106,13 +106,31 @@ public class UpgradeWindow extends GUI { return; } int maxDurability = Material.FISHING_ROD.getMaxDurability(); - int newDurability = Math.min((int) (maxDurability * (repairData.percentage() / 100.0)), maxDurability); - if (damageable.getDamage() < newDurability) { + int newDamage = Math.min((int) (maxDurability * (repairData.percentage() / 100.0)), maxDurability); + logger.debug("current damage: %, new damage %", String.valueOf(maxDurability - damageable.getDamage()), String.valueOf(newDamage)); + if ((maxDurability - damageable.getDamage()) >= newDamage) { clickingPlayer.sendMiniMessage("Your fishing rod is already more than % repaired", //TODO move to config Placeholder.parsed("percentage", String.valueOf(repairData.percentage()))); return; } - damageable.setDamage(newDurability); + int remainingPoints; + try { + remainingPoints = PointsManagement.getInstance().removePoints(player.getUniqueId(), repairData.cost()); + } catch (IllegalArgumentException e) { + player.sendMiniMessage(Messages.GUI.NOT_ENOUGH_POINTS, TagResolver.resolver( + Placeholder.parsed("price", String.valueOf(repairData.cost())), + Placeholder.parsed("points", String.valueOf(playerPoints)) + )); + return; + } + damageable.setDamage(Math.max(0, maxDurability - newDamage)); + fishingRod.setItemMeta(damageable); + inventory.setItem(fishingRodSlot, fishingRod); + player.updateInventory(); + clickingPlayer.sendMiniMessage("Your fishing rod was repaired to % of it's maximum durability. You have points remaining", TagResolver.resolver( + Placeholder.parsed("percentage", String.valueOf(repairData.percentage())), + Placeholder.parsed("points", String.valueOf(remainingPoints)) + )); } private int getTrackLevel(EnchantmentTrack enchantmentTrack, ItemStack fishingRod) {