From ebc8a823f28233ed1cd4b9b9da31cc5d63e51b8a Mon Sep 17 00:00:00 2001 From: YouHaveTrouble Date: Tue, 22 Feb 2022 20:26:42 +0100 Subject: [PATCH] special case for velocity because it's special --- .../bukkit/command/MainCommandExecutor.java | 2 +- .../common/commands/CWCommand.java | 26 ++++++++++++++++++- .../velocity/command/VelocityMainCommand.java | 2 +- .../waterfall/command/BungeeMainCommand.java | 2 +- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/command/MainCommandExecutor.java b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/command/MainCommandExecutor.java index 2365e10..36e5ad9 100644 --- a/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/command/MainCommandExecutor.java +++ b/CommandWhitelistBukkit/src/main/java/eu/endermite/commandwhitelist/bukkit/command/MainCommandExecutor.java @@ -73,6 +73,6 @@ public class MainCommandExecutor implements TabExecutor { @Override public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { List serverCommands = new ArrayList<>(Bukkit.getCommandMap().getKnownCommands().keySet()); - return CWCommand.commandSuggestions(CommandWhitelistBukkit.getConfigCache(), serverCommands, args, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission())); + return CWCommand.commandSuggestions(CommandWhitelistBukkit.getConfigCache(), serverCommands, args, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission()), CWCommand.ImplementationType.BUKKIT); } } 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 3d1b21d..078db11 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 @@ -61,10 +61,34 @@ public class CWCommand { ADD, REMOVE, HELP, RELOAD } - public static List commandSuggestions(ConfigCache config, Collection serverCommands, String[] args, boolean reloadPerm, boolean adminPerm) { + public enum ImplementationType { + BUKKIT, WATERFALL, VELOCITY + } + + public static List commandSuggestions( + ConfigCache config, + Collection serverCommands, + String[] args, boolean reloadPerm, + boolean adminPerm, + ImplementationType implementationType + ) { List list = new ArrayList<>(); switch (args.length) { + case 0: + // thanks velocity for handling completions entirely different from everything else + if (implementationType.equals(ImplementationType.VELOCITY)) { + list.add("help"); + if (reloadPerm) + list.add("reload"); + if (adminPerm) { + list.add("add"); + list.add("remove"); + } + } + return list; case 1: + if ("help".startsWith(args[0])) + list.add("help"); if ("reload".startsWith(args[0]) && reloadPerm) list.add("reload"); if ("add".startsWith(args[0]) && adminPerm) 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 bd382e1..c459485 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,7 +77,7 @@ public class VelocityMainCommand implements SimpleCommand { String[] args = invocation.arguments(); return CompletableFuture.supplyAsync(() -> { List serverCommands = new ArrayList<>(); - return CWCommand.commandSuggestions(CommandWhitelistVelocity.getConfigCache(), serverCommands, args, source.hasPermission(CWPermission.RELOAD.permission()), source.hasPermission(CWPermission.ADMIN.permission())); + return CWCommand.commandSuggestions(CommandWhitelistVelocity.getConfigCache(), serverCommands, args, source.hasPermission(CWPermission.RELOAD.permission()), source.hasPermission(CWPermission.ADMIN.permission()), CWCommand.ImplementationType.VELOCITY); }); } } 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 bff163a..00a899d 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 @@ -84,6 +84,6 @@ public class BungeeMainCommand extends Command implements TabExecutor { 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())); + return CWCommand.commandSuggestions(CommandWhitelistWaterfall.getConfigCache(), serverCommands, args, sender.hasPermission(CWPermission.RELOAD.permission()), sender.hasPermission(CWPermission.ADMIN.permission()), CWCommand.ImplementationType.WATERFALL); } }