From 017011fad0494d2c95696e955ad3b8184e2f2e94 Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Tue, 6 Jul 2021 21:31:51 +0200 Subject: [PATCH] work on command completions --- .../bukkit/CommandWhitelistBukkit.java | 1 + .../common/commands/CWCommand.java | 30 +++++++++---------- .../velocity/command/VelocityMainCommand.java | 11 ++++--- .../waterfall/command/BungeeMainCommand.java | 10 ++++++- 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java index 9c88e05..284f2b1 100644 --- a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java +++ b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/CommandWhitelistBukkit.java @@ -21,6 +21,7 @@ import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.util.HashMap; import java.util.HashSet; + import java.util.Map; public class CommandWhitelistBukkit extends JavaPlugin { diff --git a/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/commands/CWCommand.java b/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/commands/CWCommand.java index 0c36f7f..70a1e40 100644 --- a/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/commands/CWCommand.java +++ b/CommandWhitelistCommon/src/main/java/eu/endermite/commandwhitelist/common/commands/CWCommand.java @@ -36,16 +36,16 @@ public class CWCommand { Component component = MiniMessage.markdown().parse("CommandWhitelist by YouHaveTrouble") .append(Component.newline()); component = component.append(Component.text("Hover over the command to see what it does!").color(NamedTextColor.AQUA)).decoration(TextDecoration.BOLD, false).append(Component.newline()); - component = component.append(Component.text("/"+baseCommand+" help").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Displays this message")))); + component = component.append(Component.text("/" + baseCommand + " help").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Displays this message")))); if (showReloadCommand) { component = component.append(Component.newline()); - component = component.append(Component.text("/"+baseCommand+" reload").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Reloads plugin configuration")))); + component = component.append(Component.text("/" + baseCommand + " reload").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Reloads plugin configuration")))); } if (showAdminCommands) { component = component.append(Component.newline()); - component = component.append(Component.text("/"+baseCommand+" add ").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Add a command to selected permission group")))); + component = component.append(Component.text("/" + baseCommand + " add ").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Add a command to selected permission group")))); component = component.append(Component.newline()); - component = component.append(Component.text("/"+baseCommand+" remove ").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Removes a command from selected permission group")))); + component = component.append(Component.text("/" + baseCommand + " remove ").color(NamedTextColor.AQUA).hoverEvent(HoverEvent.showText(Component.text("Removes a command from selected permission group")))); } return component; } @@ -77,27 +77,27 @@ public class CWCommand { case 3: if (args[0].equalsIgnoreCase("remove")) { if (!adminPerm) return list; - try { - for (String s : config.getGroupList().get(args[1]).getCommands()) { - if (s.startsWith(args[2])) - list.add(s); - } - } catch (NullPointerException ignored) { + CWGroup group = config.getGroupList().get(args[1]); + if (group == null) return list; + for (String s : group.getCommands()) { + if (s.startsWith(args[2])) + list.add(s); } return list; } if (args[0].equalsIgnoreCase("add")) { if (!adminPerm) return list; + CWGroup group = config.getGroupList().get(args[1]); + if (group == null) return list; for (String cmd : serverCommands) { - if (!cmd.startsWith("/")) continue; + if (cmd.startsWith("/")) + cmd = cmd.substring(1); if (cmd.contains(":")) { String[] cmdSplit = cmd.split(":"); if (cmdSplit.length < 2) continue; - cmd = cmd.split(":")[1]; + cmd = cmdSplit[1]; } - cmd = cmd.replace("/", ""); - if (config.getGroupList().get(args[1]) == null) continue; - if (config.getGroupList().get(args[1]).getCommands().contains(cmd)) continue; + if (group.getCommands().contains(cmd)) continue; if (cmd.startsWith(args[2])) list.add(cmd); } diff --git a/CommandWhitelistVelocity/src/main/java/eu/endermite/commandwhitelist/velocity/command/VelocityMainCommand.java b/CommandWhitelistVelocity/src/main/java/eu/endermite/commandwhitelist/velocity/command/VelocityMainCommand.java index e45c350..f4baab9 100644 --- a/CommandWhitelistVelocity/src/main/java/eu/endermite/commandwhitelist/velocity/command/VelocityMainCommand.java +++ b/CommandWhitelistVelocity/src/main/java/eu/endermite/commandwhitelist/velocity/command/VelocityMainCommand.java @@ -77,12 +77,11 @@ public class VelocityMainCommand implements SimpleCommand { CommandSource source = invocation.source(); String[] args = invocation.arguments(); return CompletableFuture.supplyAsync(() -> { - List suggestions = new ArrayList<>(); - if (args.length == 1) { - if (source.hasPermission(CWPermission.RELOAD.permission()) && "reload".startsWith(args[0])) - suggestions.add("reload"); - } - return suggestions; + List serverCommands = new ArrayList<>(); + //TODO find out how to get all registered commands + + // This is probably very broken now + return CWCommand.commandSuggestions(CommandWhitelistVelocity.getConfigCache(), serverCommands, args, source.hasPermission(CWPermission.RELOAD.permission()), source.hasPermission(CWPermission.ADMIN.permission())); }); } } diff --git a/CommandWhitelistWaterfall/src/main/java/eu/endermite/commandwhitelist/waterfall/command/BungeeMainCommand.java b/CommandWhitelistWaterfall/src/main/java/eu/endermite/commandwhitelist/waterfall/command/BungeeMainCommand.java index db78084..6c1e6ee 100644 --- a/CommandWhitelistWaterfall/src/main/java/eu/endermite/commandwhitelist/waterfall/command/BungeeMainCommand.java +++ b/CommandWhitelistWaterfall/src/main/java/eu/endermite/commandwhitelist/waterfall/command/BungeeMainCommand.java @@ -11,6 +11,10 @@ import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.TabExecutor; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + public class BungeeMainCommand extends Command implements TabExecutor { public BungeeMainCommand(String name) { @@ -77,6 +81,10 @@ public class BungeeMainCommand extends Command implements TabExecutor { @Override public Iterable onTabComplete(CommandSender sender, String[] args) { - return null; + List serverCommands = new ArrayList<>(); + for (Map.Entry command : CommandWhitelistWaterfall.getPlugin().getProxy().getPluginManager().getCommands()) { + serverCommands.add(command.getValue().getName()); + } + return CWCommand.commandSuggestions(CommandWhitelistWaterfall.getConfigCache(), serverCommands, args, sender.hasPermission(CWPermission.RELOAD.permission()),sender.hasPermission(CWPermission.ADMIN.permission())); } }