From 1b32596c374fc4c123526f0b064cc9696cc0d678 Mon Sep 17 00:00:00 2001 From: fullwall Date: Mon, 15 Apr 2024 22:30:53 +0800 Subject: [PATCH] Allow colors in money item shop editor --- .../net/citizensnpcs/trait/shop/MoneyAction.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/main/src/main/java/net/citizensnpcs/trait/shop/MoneyAction.java b/main/src/main/java/net/citizensnpcs/trait/shop/MoneyAction.java index 8f69af6e1..7cf68ff4f 100644 --- a/main/src/main/java/net/citizensnpcs/trait/shop/MoneyAction.java +++ b/main/src/main/java/net/citizensnpcs/trait/shop/MoneyAction.java @@ -11,6 +11,7 @@ import org.bukkit.inventory.ItemStack; import net.citizensnpcs.api.gui.InputMenus; import net.citizensnpcs.api.gui.InventoryMenuPage; import net.citizensnpcs.api.persistence.Persist; +import net.citizensnpcs.api.util.Messaging; import net.citizensnpcs.util.InventoryMultiplexer; import net.citizensnpcs.util.Util; import net.milkbowl.vault.economy.Economy; @@ -18,6 +19,8 @@ import net.milkbowl.vault.economy.Economy; public class MoneyAction extends NPCShopAction { @Persist public double money; + @Persist + private String formattedMoney; public MoneyAction() { } @@ -29,7 +32,11 @@ public class MoneyAction extends NPCShopAction { @Override public String describe() { Economy economy = Bukkit.getServicesManager().getRegistration(Economy.class).getProvider(); - return money + " " + economy.currencyNamePlural(); + return getFormattedMoney() + " " + economy.currencyNamePlural(); + } + + private String getFormattedMoney() { + return formattedMoney == null || formattedMoney.isEmpty() ? Double.toString(money) : formattedMoney; } @Override @@ -81,11 +88,12 @@ public class MoneyAction extends NPCShopAction { MoneyAction action = previous == null ? new MoneyAction() : (MoneyAction) previous; return InputMenus.filteredStringSetter(() -> Double.toString(action.money), s -> { try { - double result = Double.parseDouble(s); + double result = Double.parseDouble(Messaging.stripColor(s)); if (result < 0) return false; action.money = result; + action.formattedMoney = !Messaging.stripColor(s).equals(s) ? s : null; } catch (NumberFormatException nfe) { return false; }