From 5337a1b4bd700d7b4f2d4392cf77faac68a44e3e Mon Sep 17 00:00:00 2001 From: AngrySoundTech Date: Sun, 10 Nov 2024 11:55:57 -0500 Subject: [PATCH 1/2] Show pearl health value instead of percent --- .../com/devotedmc/ExilePearl/ExilePearl.java | 7 ------- .../ExilePearl/command/CmdAdminSetHealth.java | 18 +++++++----------- .../ExilePearl/core/CoreExilePearl.java | 11 ----------- .../ExilePearl/core/CoreLoreGenerator.java | 8 +++----- .../ExilePearl/listener/PlayerListener.java | 17 +++++++++-------- 5 files changed, 19 insertions(+), 42 deletions(-) diff --git a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/ExilePearl.java b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/ExilePearl.java index 5a585d509..179358a0c 100644 --- a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/ExilePearl.java +++ b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/ExilePearl.java @@ -123,13 +123,6 @@ public interface ExilePearl { */ int getHealth(); - /** - * Gets the pearl health percent value - * - * @return The health percent value - */ - Integer getHealthPercent(); - /** * Sets the pearl health value * diff --git a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/command/CmdAdminSetHealth.java b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/command/CmdAdminSetHealth.java index 853d0c82d..f61e635ea 100644 --- a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/command/CmdAdminSetHealth.java +++ b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/command/CmdAdminSetHealth.java @@ -11,10 +11,10 @@ public class CmdAdminSetHealth extends PearlCommand { super(pearlApi); this.aliases.add("sethealth"); - this.setHelpShort("Sets the health % value of a pearl."); + this.setHelpShort("Sets the health value of a pearl."); this.commandArgs.add(requiredPearlPlayer()); - this.commandArgs.add(required("health %", autoTab("", "Enter the desired health percent"))); + this.commandArgs.add(required("health", autoTab("", "Enter the desired health"))); this.permission = Permission.SET_HEALTH.node; this.visibility = CommandVisibility.SECRET; @@ -34,17 +34,13 @@ public class CmdAdminSetHealth extends PearlCommand { return; } - Integer arg = argAsInt(1); - if (arg == null) { - msg("Pearl health must be an integer between 0 and 100."); + Integer health = argAsInt(1); + if (health == null) { + msg("Pearl health must be an integer"); return; } - int percent = Math.min(100, Math.max(1, arg)); - - // calculate the actual value - int healthValue = (int) (plugin.getPearlConfig().getPearlHealthMaxValue() * ((double) percent / 100)); - pearl.setHealth(healthValue); - msg("You updated the pearl health of player %s to %d%%", pearl.getPlayerName(), percent); + pearl.setHealth(health); + msg("You updated the pearl health of player %s to %d", pearl.getPlayerName(), health); } } diff --git a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreExilePearl.java b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreExilePearl.java index 547666001..4c7935616 100644 --- a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreExilePearl.java +++ b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreExilePearl.java @@ -231,17 +231,6 @@ final class CoreExilePearl implements ExilePearl { } - /** - * Gets the pearl health value - * - * @return The strength value - */ - @Override - public Integer getHealthPercent() { - return (int) Math.round(((double) health / pearlApi.getPearlConfig().getPearlHealthMaxValue()) * 100); - } - - /** * Gets the pearl health value * diff --git a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java index ca048b565..650eedacc 100644 --- a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java +++ b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java @@ -71,11 +71,9 @@ final class CoreLoreGenerator implements LoreProvider { private List generateLoreInternal(ExilePearl pearl, int health, boolean addCommandHelp) { List lore = new ArrayList(); - Integer healthPercent = Math.min(100, Math.max(0, (int) Math.round(((double) health / config.getPearlHealthMaxValue()) * 100))); - lore.add(parse("%s", pearl.getItemName())); lore.add(parse(PlayerNameStringFormat, pearl.getPlayerName(), Integer.toString(pearl.getPearlId(), 36).toUpperCase())); - lore.add(parse("Health: %s%%", healthPercent.toString())); + lore.add(parse("Health: %s/%s", health, config.getPearlHealthMaxValue())); lore.add(parse("Exiled on: %s", dateFormat.format(pearl.getPearledOn()))); lore.add(parse("Killed by: %s", pearl.getKillerName())); if (ExilePearlPlugin.getApi().isBanStickEnabled() && BanHandler.isPlayerBanned(pearl.getPlayerId())) { @@ -84,13 +82,13 @@ final class CoreLoreGenerator implements LoreProvider { Set repair = config.getRepairMaterials(pearl.getPearlType()); if (repair != null) { for (RepairMaterial rep : repair) { - int amountPerItem = rep.getRepairAmount(); + double amountPerItem = rep.getRepairAmount() / pearl.getLongTimeMultiplier(); String item = rep.getStack().getType().toString(); if (rep.getStack().hasItemMeta() && rep.getStack().getItemMeta().hasDisplayName()) { item = rep.getStack().getItemMeta().getDisplayName(); } int damagesPerHumanInterval = (config.getPearlHealthDecayHumanIntervalMin() / config.getPearlHealthDecayIntervalMin()) * config.getPearlHealthDecayAmount(); // intervals in a human interval * damage per - int repairsPerHumanInterval = damagesPerHumanInterval / amountPerItem; + int repairsPerHumanInterval = (int) Math.ceil(damagesPerHumanInterval / amountPerItem); lore.add(parse("Cost per %s using %s: %s", config.getPearlHealthDecayHumanInterval(), item, Integer.toString(repairsPerHumanInterval))); } } diff --git a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/listener/PlayerListener.java b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/listener/PlayerListener.java index b73a3a4b2..b346d0780 100644 --- a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/listener/PlayerListener.java +++ b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/listener/PlayerListener.java @@ -1107,15 +1107,15 @@ public class PlayerListener implements Listener, Configurable { return; } - // Get the total possible repair amount. This doesn't need to be limited - // because the lore generator will cap at 100% + // Get the total possible repair amount and new health value int repairAmount = invItems.getAmount(repairItem.getStack()) * repairItem.getRepairAmount(); repairAmount = (int) Math.ceil(repairAmount / pearl.getLongTimeMultiplier()); + int newHealth = Math.min(pearlApi.getPearlConfig().getPearlHealthMaxValue(), pearl.getHealth() + repairAmount); // Generate a new item with the updated health value as the crafting result ItemStack resultStack = pearl.createItemStack(); ItemMeta im = resultStack.getItemMeta(); - im.setLore(pearlApi.getLoreProvider().generateLoreWithModifiedHealth(pearl, pearl.getHealth() + repairAmount)); + im.setLore(pearlApi.getLoreProvider().generateLoreWithModifiedHealth(pearl, newHealth)); resultStack.setItemMeta(im); e.getInventory().setResult(resultStack); @@ -1146,11 +1146,12 @@ public class PlayerListener implements Listener, Configurable { // Quit if no repair items were found in the crafting inventory if (repairItem != null) { int maxHealth = pearlApi.getPearlConfig().getPearlHealthMaxValue(); - int repairPerItem = repairItem.getRepairAmount(); int repairMatsAvailable = invItems.getAmount(repairItem.getStack()); - int repairMatsToUse = Math.min((int) Math.ceil((maxHealth - pearl.getHealth()) / (double) repairPerItem), repairMatsAvailable); - int repairAmount = repairMatsToUse * repairPerItem; - repairAmount = (int) Math.ceil(repairAmount / pearl.getLongTimeMultiplier()); + int healthToFill = maxHealth - pearl.getHealth(); + double repairPerItem = repairItem.getRepairAmount() / pearl.getLongTimeMultiplier(); + int repairMatsToUse = Math.min((int) Math.ceil(healthToFill / repairPerItem), repairMatsAvailable); + int repairAmount = (int) (repairMatsToUse * repairPerItem); + int newHealth = Math.min(pearlApi.getPearlConfig().getPearlHealthMaxValue(), pearl.getHealth() + repairAmount); // Changing the value of the crafting items results in a dupe glitch so any remaining // materials need to be placed back into the player's inventory. @@ -1178,7 +1179,7 @@ public class PlayerListener implements Listener, Configurable { inv.clear(); // Repair the pearl and update the item stack - pearl.setHealth(pearl.getHealth() + repairAmount); + pearl.setHealth(newHealth); inv.setResult(pearl.createItemStack()); pearlApi.log("The pearl for player %s was repaired by %d points.", pearl.getPlayerName(), repairAmount); return; From b55d028363b9f7393a57c586e0519addaef08225 Mon Sep 17 00:00:00 2001 From: AngrySoundTech Date: Sun, 10 Nov 2024 12:25:54 -0500 Subject: [PATCH 2/2] Move health value to cost section --- .../com/devotedmc/ExilePearl/core/CoreLoreGenerator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java index 650eedacc..c859439ed 100644 --- a/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java +++ b/plugins/exilepearl-paper/src/main/java/com/devotedmc/ExilePearl/core/CoreLoreGenerator.java @@ -73,12 +73,15 @@ final class CoreLoreGenerator implements LoreProvider { lore.add(parse("%s", pearl.getItemName())); lore.add(parse(PlayerNameStringFormat, pearl.getPlayerName(), Integer.toString(pearl.getPearlId(), 36).toUpperCase())); - lore.add(parse("Health: %s/%s", health, config.getPearlHealthMaxValue())); lore.add(parse("Exiled on: %s", dateFormat.format(pearl.getPearledOn()))); lore.add(parse("Killed by: %s", pearl.getKillerName())); if (ExilePearlPlugin.getApi().isBanStickEnabled() && BanHandler.isPlayerBanned(pearl.getPlayerId())) { lore.add(parse("Player is banned.")); } + + lore.add(parse("")); + + lore.add(parse("Health: %s/%s", health, config.getPearlHealthMaxValue())); Set repair = config.getRepairMaterials(pearl.getPearlType()); if (repair != null) { for (RepairMaterial rep : repair) {