diff --git a/Core/resources/messages.yml b/Core/resources/messages.yml index c10c8a1d..41b337e5 100644 --- a/Core/resources/messages.yml +++ b/Core/resources/messages.yml @@ -4,7 +4,7 @@ # All configurable messages in TNE Messages: - config-version: 3 + config-version: 4 General: Version: "TNE Version: $version - Build: $build" @@ -124,6 +124,7 @@ Messages: Shared: Save: "Save" + Reset: "Reset" PreviousPageDisplay: "Previous Page" PreviousPage: "Click to go to previous page." NextPageDisplay: "Next Page" @@ -161,6 +162,7 @@ Messages: Currency: SaveLore: "Click to save the currencies." + ResetLore: "Click to clear changes, and reset to previous currencies." CurrencyExistsMessage: "A currency with that identifier already exists! Enter an identifier for the currency:" SetIdentifierMessage: "Enter an identifier for the currency:" AddCurrencyDisplay: "Add Currency" diff --git a/Core/src/net/tnemc/core/currency/item/ItemDenomination.java b/Core/src/net/tnemc/core/currency/item/ItemDenomination.java index 1be53087..c4d7a1c5 100644 --- a/Core/src/net/tnemc/core/currency/item/ItemDenomination.java +++ b/Core/src/net/tnemc/core/currency/item/ItemDenomination.java @@ -19,10 +19,12 @@ */ import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; import net.tnemc.core.currency.Denomination; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.LinkedList; import java.util.List; /** @@ -104,6 +106,14 @@ public List getLore() { return lore; } + public LinkedList getLoreAsString() { + final LinkedList loreAsString = new LinkedList<>(); + for(Component component : lore) { + loreAsString.add(MiniMessage.miniMessage().serialize(component)); + } + return loreAsString; + } + public void setLore(List lore) { this.lore.clear(); this.lore.addAll(lore); diff --git a/Core/src/net/tnemc/core/currency/saver/DefaultCurrencySaver.java b/Core/src/net/tnemc/core/currency/saver/DefaultCurrencySaver.java index 621a70cf..0f8817b3 100644 --- a/Core/src/net/tnemc/core/currency/saver/DefaultCurrencySaver.java +++ b/Core/src/net/tnemc/core/currency/saver/DefaultCurrencySaver.java @@ -342,7 +342,7 @@ public void saveDenomination(final File directory, Currency currency, Denominati if(!itemDenomination.getLore().isEmpty()) { MISCUtils.setComment(denom, "Options.Lore", "The lore string this item must have in order to be considered currency.(Optional)"); - denom.set("Options.Lore", itemDenomination.getLore()); + denom.set("Options.Lore", itemDenomination.getLoreAsString()); } if(itemDenomination.getCustomModel() > -1) { diff --git a/Core/src/net/tnemc/core/menu/MyEcoMenu.java b/Core/src/net/tnemc/core/menu/MyEcoMenu.java index 0ddacdb0..2b4d1a74 100644 --- a/Core/src/net/tnemc/core/menu/MyEcoMenu.java +++ b/Core/src/net/tnemc/core/menu/MyEcoMenu.java @@ -160,6 +160,24 @@ public MyEcoMenu() { }), new PageSwitchWithClose(this.name, -1)) .withSlot(6) .build()); + + open.getPage().addIcon(new IconBuilder(PluginCore.server().stackBuilder().of("BLACK_WOOL", 1) + .display(MessageHandler.grab(new MessageData("Messages.Menu.Shared.Reset"), id)) + .lore(Collections.singletonList(MessageHandler.grab(new MessageData("Messages.Menu.MyEco.Currency.ResetLore"), id)))) + .withActions(new RunnableAction((click)->{ + + final File directory = new File(PluginCore.directory(), "currency"); + + try { + + TNECore.eco().currency().getCurrencies().clear(); + TNECore.eco().currency().getCurIDMap().clear(); + + TNECore.eco().currency().getLoader().loadCurrencies(directory); + } catch(NoValidCurrenciesException ignore) {} + }), new PageSwitchWithClose(this.name, -1)) + .withSlot(8) + .build()); //add currency final SwitchPageIcon addCurrencyIcon = new SwitchPageIcon(2, PluginCore.server().stackBuilder().of("ARROW", 1) @@ -175,7 +193,9 @@ public MyEcoMenu() { return false; } - message.getPlayer().viewer().get().addData(ACTIVE_CURRENCY, new Currency(message.getMessage())); + Currency newCurObj = new Currency(message.getMessage()); + message.getPlayer().viewer().get().addData(ACTIVE_CURRENCY, newCurObj); + TNECore.eco().currency().addCurrency(newCurObj); return true; } message.getPlayer().message("Enter an identifier for the currency:");