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) {