From c84668e538189cbd3fa8f735182ac50ca4a42d94 Mon Sep 17 00:00:00 2001 From: filoghost Date: Sat, 15 Aug 2020 15:04:24 +0200 Subject: [PATCH] Automatically upgrade old action prefixes --- .../chestcommands/legacy/UpgradeList.java | 4 +- ... => v4_0_MenuNodeReformatUpgradeTask.java} | 42 ++++++++++++++++--- 2 files changed, 39 insertions(+), 7 deletions(-) rename plugin/src/main/java/me/filoghost/chestcommands/legacy/v4_0/{v4_0_MenuNodeExpandUpgradeTask.java => v4_0_MenuNodeReformatUpgradeTask.java} (76%) diff --git a/plugin/src/main/java/me/filoghost/chestcommands/legacy/UpgradeList.java b/plugin/src/main/java/me/filoghost/chestcommands/legacy/UpgradeList.java index e1d4649..49cf1ba 100644 --- a/plugin/src/main/java/me/filoghost/chestcommands/legacy/UpgradeList.java +++ b/plugin/src/main/java/me/filoghost/chestcommands/legacy/UpgradeList.java @@ -11,7 +11,7 @@ import me.filoghost.chestcommands.legacy.upgrade.Upgrade; import me.filoghost.chestcommands.legacy.upgrade.UpgradeTask; import me.filoghost.chestcommands.legacy.upgrade.UpgradeTaskException; import me.filoghost.chestcommands.legacy.v4_0.v4_0_LangUpgradeTask; -import me.filoghost.chestcommands.legacy.v4_0.v4_0_MenuNodeExpandUpgradeTask; +import me.filoghost.chestcommands.legacy.v4_0.v4_0_MenuNodeReformatUpgradeTask; import me.filoghost.chestcommands.legacy.v4_0.v4_0_MenuNodeRenameUpgradeTask; import me.filoghost.chestcommands.legacy.v4_0.v4_0_PlaceholdersFileUpgradeTask; import me.filoghost.chestcommands.legacy.v4_0.v4_0_SettingsUpgradeTask; @@ -40,7 +40,7 @@ public class UpgradeList { multiTaskUpgrade("v4.0-menus-reformat", (configManager) -> { String legacyCommandSeparator = readLegacyCommandSeparator(configManager); return createMenuTasks(configManager, - file -> new v4_0_MenuNodeExpandUpgradeTask(configManager, file, legacyCommandSeparator)); + file -> new v4_0_MenuNodeReformatUpgradeTask(configManager, file, legacyCommandSeparator)); }), // Upgrade config after reading the command separator for menus diff --git a/plugin/src/main/java/me/filoghost/chestcommands/legacy/v4_0/v4_0_MenuNodeExpandUpgradeTask.java b/plugin/src/main/java/me/filoghost/chestcommands/legacy/v4_0/v4_0_MenuNodeReformatUpgradeTask.java similarity index 76% rename from plugin/src/main/java/me/filoghost/chestcommands/legacy/v4_0/v4_0_MenuNodeExpandUpgradeTask.java rename to plugin/src/main/java/me/filoghost/chestcommands/legacy/v4_0/v4_0_MenuNodeReformatUpgradeTask.java index 0698712..fbd2ffe 100644 --- a/plugin/src/main/java/me/filoghost/chestcommands/legacy/v4_0/v4_0_MenuNodeExpandUpgradeTask.java +++ b/plugin/src/main/java/me/filoghost/chestcommands/legacy/v4_0/v4_0_MenuNodeReformatUpgradeTask.java @@ -20,11 +20,11 @@ import java.util.Collections; import java.util.List; import java.util.regex.Pattern; -public class v4_0_MenuNodeExpandUpgradeTask extends YamlUpgradeTask { +public class v4_0_MenuNodeReformatUpgradeTask extends YamlUpgradeTask { private final String legacyCommandSeparator; - public v4_0_MenuNodeExpandUpgradeTask(ConfigManager configManager, Path menuFile, String legacyCommandSeparator) { + public v4_0_MenuNodeReformatUpgradeTask(ConfigManager configManager, Path menuFile, String legacyCommandSeparator) { super(configManager.getConfigLoader(menuFile)); this.legacyCommandSeparator = legacyCommandSeparator; } @@ -50,17 +50,49 @@ public class v4_0_MenuNodeExpandUpgradeTask extends YamlUpgradeTask { private void upgradeMenuSettings(ConfigSection section) { expandInlineList(section, MenuSettingsNode.COMMANDS, ";"); expandInlineList(section, MenuSettingsNode.OPEN_ACTIONS, legacyCommandSeparator); + updateActionPrefixes(section, MenuSettingsNode.OPEN_ACTIONS); } private void upgradeIcon(ConfigSection section) { - expandInlineList(section, AttributeType.ACTIONS.getAttributeName(), legacyCommandSeparator); expandInlineList(section, AttributeType.ENCHANTMENTS.getAttributeName(), ";"); - + expandInlineList(section, AttributeType.ACTIONS.getAttributeName(), legacyCommandSeparator); + updateActionPrefixes(section, AttributeType.ACTIONS.getAttributeName()); expandSingletonList(section, AttributeType.REQUIRED_ITEMS.getAttributeName()); - expandInlineItemstack(section); } + private void updateActionPrefixes(ConfigSection config, String node) { + List actions = config.getStringList(node); + if (actions == null) { + return; + } + + for (int i = 0; i < actions.size(); i++) { + String oldAction = actions.get(i); + String newAction = oldAction; + newAction = replacePrefix(newAction, "menu:", "open:"); + newAction = replacePrefix(newAction, "givemoney:", "give-money:"); + newAction = replacePrefix(newAction, "dragonbar:", "dragon-bar:"); + newAction = replacePrefix(newAction, "server ", "server: "); + + if (!newAction.equals(oldAction)) { + setSaveRequired(); + actions.set(i, newAction); + } + } + + config.setStringList(node, actions); + } + + private String replacePrefix(String action, String oldPrefix, String newPrefix) { + if (action.startsWith(oldPrefix)) { + setSaveRequired(); + return newPrefix + action.substring(oldPrefix.length()); + } else { + return action; + } + } + private void expandInlineItemstack(ConfigSection section) { String material = section.getString(AttributeType.MATERIAL.getAttributeName()); if (material == null) {