Fixed repairing

- charges money now
- correctly checks if they already have it repaired enough
- repairs to the correct value
This commit is contained in:
Teriuihi 2023-09-28 02:11:45 +02:00
parent 173324c68f
commit 75d417da44

View File

@ -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("<green>Repair <percent>% for <points> points</green>", TagResolver.resolver(
itemMeta.displayName(MiniMessage.miniMessage().deserialize("<green>Repair up to <percent>% for <points> points</green>", 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("<red>Your fishing rod is already more than <percentage>% 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("<green>Your fishing rod was repaired to <percentage>% of it's maximum durability. You have <points> points remaining</green>", TagResolver.resolver(
Placeholder.parsed("percentage", String.valueOf(repairData.percentage())),
Placeholder.parsed("points", String.valueOf(remainingPoints))
));
}
private int getTrackLevel(EnchantmentTrack enchantmentTrack, ItemStack fishingRod) {