diff --git a/src/me/rockyhawk/commandpanels/CommandPanels.java b/src/me/rockyhawk/commandpanels/CommandPanels.java index 4c32b78..89c8356 100644 --- a/src/me/rockyhawk/commandpanels/CommandPanels.java +++ b/src/me/rockyhawk/commandpanels/CommandPanels.java @@ -74,8 +74,6 @@ public class CommandPanels extends JavaPlugin { addPermission("commandpanels.command.open", PermissionDefault.OP); addPermission("commandpanels.command.open.other", PermissionDefault.OP); addPermission("commandpanels.command.help", PermissionDefault.TRUE); - // REMOVE AFTER CONVERTER IS REMOVED - addPermission("commandpanels.command.convert", PermissionDefault.OP); } private void addPermission(String name, PermissionDefault defaultValue) { diff --git a/src/me/rockyhawk/commandpanels/Converter.java b/src/me/rockyhawk/commandpanels/Converter.java deleted file mode 100644 index 1e9991c..0000000 --- a/src/me/rockyhawk/commandpanels/Converter.java +++ /dev/null @@ -1,243 +0,0 @@ -package me.rockyhawk.commandpanels; - -import me.rockyhawk.commandpanels.formatter.language.Message; -import org.bukkit.command.CommandSender; -import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.configuration.file.YamlConfiguration; - -import java.io.File; -import java.io.IOException; -import java.util.*; - -public class Converter { - private final Context ctx; - - public Converter(Context ctx) { - this.ctx = ctx; - } - - // CONVERTER For CommandPanels v3 to v4 - // Will be removed at some point when v4 is further adopted - // Does not include 1:! conversions as the two configs are incompatible in many ways - - public void convertPanels(CommandSender sender) { - File oldPanelsDir = new File(ctx.plugin.getDataFolder(), "old_panels"); // e.g. plugins/CommandPanels/old_panels - if (!oldPanelsDir.exists()) { - ctx.text.sendError(sender, Message.CONVERT_PANEL_CONFIG); - ctx.text.sendError(sender, Message.CONVERT_OLD_DIR_NOT_FOUND, oldPanelsDir.getPath()); - return; - } - - File[] files = oldPanelsDir.listFiles((dir, name) -> name.endsWith(".yml")); - if (files == null || files.length == 0) { - ctx.text.sendInfo(sender, Message.CONVERT_NO_OLD_FILES); - return; - } - - for (File file : files) { - try { - YamlConfiguration oldConfig = YamlConfiguration.loadConfiguration(file); - ConfigurationSection panelsSection = oldConfig.getConfigurationSection("panels"); - - if (panelsSection == null) { - ctx.text.sendError(sender, Message.CONVERT_NO_PANELS_SECTION, file.getName()); - continue; - } - - for (String panelName : panelsSection.getKeys(false)) { - ConfigurationSection oldPanel = panelsSection.getConfigurationSection(panelName); - if (oldPanel == null) continue; - - Map newPanel = convertPanel(panelName, oldPanel); - - File outFile = new File(ctx.plugin.folder, panelName + ".yml"); - YamlConfiguration newYaml = new YamlConfiguration(); - for (Map.Entry entry : newPanel.entrySet()) { - newYaml.set(entry.getKey(), entry.getValue()); - } - newYaml.save(outFile); - - ctx.text.sendInfo(sender, Message.CONVERT_SUCCESS, panelName, outFile.getName()); - } - } catch (IOException ex) { - ctx.text.sendError(sender, Message.CONVERT_FILE_FAILED, file.getName()); - } - } - } - - private Map convertPanel(String panelName, ConfigurationSection oldPanel) { - Map newPanel = new LinkedHashMap<>(); - - newPanel.put("title", oldPanel.getString("title", "&fPanel")); - newPanel.put("type", "inventory"); // hardcoded type unless we detect others - newPanel.put("rows", oldPanel.getInt("rows", 6)); - - // Commands from "commands" and "commands-on-open" - List openCommands = oldPanel.getStringList("commands-on-open"); - List baseCommands = oldPanel.getStringList("commands"); - String newOpenCommand = null; - - if (!baseCommands.isEmpty()) { - newOpenCommand = baseCommands.getFirst(); // Only use the first base command - } - - List newOpenCommands = new ArrayList<>(openCommands); // Add commands - - newPanel.put("command", newOpenCommand); - newPanel.put("commands", newOpenCommands); - - // Create layout and items map - Map> layout = new LinkedHashMap<>(); - Map items = new LinkedHashMap<>(); - - // Add custom items (named reusable entries) - if (oldPanel.isConfigurationSection("custom-item")) { - ConfigurationSection customItems = oldPanel.getConfigurationSection("custom-item"); - if (customItems != null) { - for (String itemKey : customItems.getKeys(false)) { - items.put(itemKey, convertItem(customItems.getConfigurationSection(itemKey))); - } - } - } - - // Convert item slots to layout - ConfigurationSection itemSection = oldPanel.getConfigurationSection("item"); - if (itemSection != null) { - for (String slotKey : itemSection.getKeys(false)) { - ConfigurationSection itemConfig = itemSection.getConfigurationSection(slotKey); - - String itemId = panelName + "_slot_" + slotKey; - Map convertedItem = convertItem(itemConfig); - - if (itemConfig != null && (itemConfig.contains("commands") || hasNestedConditions(itemConfig))) { - // Move commands into 'actions' - List cmds = itemConfig.getStringList("commands"); - if (!cmds.isEmpty()) { - Map leftClick = new HashMap<>(); - List cmdList = new ArrayList<>(); - for (String cmd : cmds) { - // Do command tag convert attempts - cmdList.add(commandTagConverter(cmd)); - } - leftClick.put("commands", cmdList); - convertedItem.put("actions", leftClick); - } - } - - // Handle nested "has0", "has1" logic - List> logicVariants = extractConditionVariants(itemConfig); - if (!logicVariants.isEmpty()) { - // Add base item as default (without conditions) - items.put(itemId + "_base", convertedItem); - layout.put(slotKey, new ArrayList<>(Collections.singletonList(itemId + "_base"))); - - int i = 0; - for (Map variant : logicVariants) { - String variantId = itemId + "_cond_" + i; - items.put(variantId, variant); - layout.get(slotKey).addFirst(variantId); // priority first - i++; - } - } else { - items.put(itemId, convertedItem); - layout.put(slotKey, new ArrayList<>(Collections.singletonList(itemId))); - } - } - } - if(oldPanel.contains("empty")){ - layout.put("fill", new ArrayList<>(Collections.singletonList("empty_item"))); - items.put("empty_item.material", oldPanel.getString("empty")); - } - - newPanel.put("layout", layout); - newPanel.put("items", items); - - return newPanel; - } - - private Map convertItem(ConfigurationSection itemConfig) { - Map item = new LinkedHashMap<>(); - - if (itemConfig == null) return item; - - for (String key : itemConfig.getKeys(false)) { - Object value = itemConfig.get(key); - - switch (key) { - case "commands": - // Handled separately in layout - break; - case "name": - case "material": - case "lore": - case "enchanted": - case "damage": - case "stack": - case "leatherarmor": - item.put(key, value); - break; - default: - if (!key.startsWith("has")) { - item.put(key, value); - } - break; - } - } - - return item; - } - - private String commandTagConverter(String command){ - command = command.replace("server=", "[server]"); - command = command.replace("open=", "[open]"); - command = command.replace("cpc", "[close]"); - command = command.replace("console=", "[console]"); - command = command.replace("refresh", "[refresh]"); - command = command.replace("data=", "[data]"); - command = command.replace("msg=", "[msg]"); - command = command.replace("teleport=", "[teleport]"); - return command; - } - - private boolean hasNestedConditions(ConfigurationSection itemConfig) { - for (String key : itemConfig.getKeys(false)) { - if (key.startsWith("has")) return true; - } - return false; - } - - private List> extractConditionVariants(ConfigurationSection itemConfig) { - List> variants = new ArrayList<>(); - - for (String key : itemConfig.getKeys(false)) { - if (key.startsWith("has")) { - ConfigurationSection conditionSection = itemConfig.getConfigurationSection(key); - if (conditionSection == null) continue; - - Map variant = convertItem(conditionSection); - - String conditions = ""; - for (String subKey : conditionSection.getKeys(false)) { - if (subKey.startsWith("compare")) { - int index = Integer.parseInt(subKey.substring(7)); - String valueKey = "value" + index; - if (conditionSection.contains(valueKey)) { - String compare = conditionSection.getString(subKey); - String value = conditionSection.getString(valueKey); - conditions = compare + " $EQUALS " + value; - break; - } - } - } - - if (!conditions.isEmpty()) { - variant.put("conditions", conditions); - } - - variants.add(variant); - } - } - - return variants; - } -} \ No newline at end of file diff --git a/src/me/rockyhawk/commandpanels/builder/dialog/ActionBuilder.java b/src/me/rockyhawk/commandpanels/builder/dialog/ActionBuilder.java index 8570b78..666d79f 100644 --- a/src/me/rockyhawk/commandpanels/builder/dialog/ActionBuilder.java +++ b/src/me/rockyhawk/commandpanels/builder/dialog/ActionBuilder.java @@ -14,7 +14,6 @@ import me.rockyhawk.commandpanels.session.dialog.components.DialogButton; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickCallback; import net.kyori.adventure.text.event.ClickEvent; -import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.Listener; diff --git a/src/me/rockyhawk/commandpanels/commands/MainCommand.java b/src/me/rockyhawk/commandpanels/commands/MainCommand.java index 97dfdb3..027df2f 100644 --- a/src/me/rockyhawk/commandpanels/commands/MainCommand.java +++ b/src/me/rockyhawk/commandpanels/commands/MainCommand.java @@ -27,7 +27,6 @@ public class MainCommand implements BasicCommand { register(new HelpCommand()); register(new VersionCommand()); register(new DataCommand()); - register(new ConvertCommand()); } private void register(SubCommand subCommand) { diff --git a/src/me/rockyhawk/commandpanels/commands/TabComplete.java b/src/me/rockyhawk/commandpanels/commands/TabComplete.java index 270a190..16991b5 100644 --- a/src/me/rockyhawk/commandpanels/commands/TabComplete.java +++ b/src/me/rockyhawk/commandpanels/commands/TabComplete.java @@ -41,10 +41,6 @@ public class TabComplete { if (sender.hasPermission("commandpanels.command.data")) { output.add("data"); } - // REMOVE AFTER CONVERTER IS REMOVED - if (sender.hasPermission("commandpanels.command.convert")) { - output.add("convert"); - } } if (args.length == 2) { diff --git a/src/me/rockyhawk/commandpanels/commands/subcommands/ConvertCommand.java b/src/me/rockyhawk/commandpanels/commands/subcommands/ConvertCommand.java deleted file mode 100644 index 287a1b0..0000000 --- a/src/me/rockyhawk/commandpanels/commands/subcommands/ConvertCommand.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.rockyhawk.commandpanels.commands.subcommands; - -import me.rockyhawk.commandpanels.Context; -import me.rockyhawk.commandpanels.Converter; -import me.rockyhawk.commandpanels.commands.SubCommand; -import org.bukkit.command.CommandSender; - -public class ConvertCommand implements SubCommand { - - @Override - public String getName() { - return "convert"; - } - - @Override - public String getPermission() { - return "commandpanels.command.convert"; - } - - @Override - public boolean execute(Context ctx, CommandSender sender, String[] args) { - Converter converter = new Converter(ctx); - converter.convertPanels(sender); - ctx.fileHandler.reloadPanels(); - return true; - } -} diff --git a/src/me/rockyhawk/commandpanels/commands/subcommands/HelpCommand.java b/src/me/rockyhawk/commandpanels/commands/subcommands/HelpCommand.java index 6469e0a..8432d3f 100644 --- a/src/me/rockyhawk/commandpanels/commands/subcommands/HelpCommand.java +++ b/src/me/rockyhawk/commandpanels/commands/subcommands/HelpCommand.java @@ -45,11 +45,6 @@ public class HelpCommand implements SubCommand { ctx.text.sendHelp(sender, Message.HELP_HELP_COMMAND, Message.HELP_HELP_DESCRIPTION); } - // REMOVE AFTER CONVERTER IS REMOVED - if (sender.hasPermission("commandpanels.command.convert")) { - ctx.text.sendHelp(sender, Message.HELP_CONVERT_COMMAND, Message.HELP_CONVERT_DESCRIPTION); - } - return true; } } diff --git a/src/me/rockyhawk/commandpanels/formatter/language/Message.java b/src/me/rockyhawk/commandpanels/formatter/language/Message.java index ff6bdcd..9cb15f4 100644 --- a/src/me/rockyhawk/commandpanels/formatter/language/Message.java +++ b/src/me/rockyhawk/commandpanels/formatter/language/Message.java @@ -10,14 +10,6 @@ public enum Message { COMMAND_UNKNOWN_SUBCOMMAND("Unknown subcommand. Use /pa help."), COMMAND_SUBCOMMAND_HELP("Use /pa help for a list of subcommands."), - // Converter - CONVERT_PANEL_CONFIG("Converts v3 -> v4 Panel config layouts"), - CONVERT_OLD_DIR_NOT_FOUND("Old panels directory not found: {0}"), - CONVERT_NO_PANELS_SECTION("No panels section in file: {0}"), - CONVERT_FILE_FAILED("Failed to convert file: {0}"), - CONVERT_NO_OLD_FILES("No old panel files found."), - CONVERT_SUCCESS("Converted panel: {0} -> {1}"), - // FileHandler / DataLoader / GenerateManager FILE_CREATE_PANELS_FAIL("Failed to create panels folder!"), FILE_CREATE_EXAMPLE_FAIL("Could not create example panels!"), @@ -117,8 +109,6 @@ public enum Message { HELP_VERSION_DESCRIPTION("Gets the plugin version"), HELP_HELP_COMMAND("/pa help"), HELP_HELP_DESCRIPTION("Shows this help menu"), - HELP_CONVERT_COMMAND("/pa convert"), - HELP_CONVERT_DESCRIPTION("Converts basic layout from v3 to v4 panels (not plug and play)"), // Misc DIALOG_NO_BUTTONS("Dialog needs at least one button"),