From 71604d5b45e2b2506b6f55e8b07fbf9abb16bb0b Mon Sep 17 00:00:00 2001 From: funkemunky Date: Wed, 6 Apr 2022 08:40:18 -0400 Subject: [PATCH] Adding bungee tab complete --- .../brighten/antivpn/bungee/BungeePlugin.java | 47 +---------- .../antivpn/bungee/command/BungeeCommand.java | 81 +++++++++++++++++++ .../{ => command}/BungeeCommandExecutor.java | 2 +- 3 files changed, 84 insertions(+), 46 deletions(-) create mode 100644 Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommand.java rename Bungee/src/main/java/dev/brighten/antivpn/bungee/{ => command}/BungeeCommandExecutor.java (96%) diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java index d87dba8..3cd03f6 100644 --- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java +++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java @@ -1,6 +1,7 @@ package dev.brighten.antivpn.bungee; import dev.brighten.antivpn.AntiVPN; +import dev.brighten.antivpn.bungee.command.BungeeCommand; import dev.brighten.antivpn.command.Command; import dev.brighten.antivpn.utils.ConfigDefault; import lombok.val; @@ -24,9 +25,6 @@ public class BungeePlugin extends Plugin { private SingleLineChart vpnDetections, ipsChecked; - private static final BaseComponent[] noPermission = new ComponentBuilder("No permission").color(ChatColor.RED) - .create(); - @Override public void onEnable() { pluginInstance = this; @@ -51,49 +49,8 @@ public class BungeePlugin extends Plugin { 10, 10, TimeUnit.MINUTES); } - //TODO Add command functionality for BungeeCord for (Command command : AntiVPN.getInstance().getCommands()) { - BungeeCord.getInstance().getPluginManager().registerCommand(pluginInstance, new net.md_5.bungee.api.plugin - .Command(command.name(), command.permission(), command.aliases()) { - - @Override - public void execute(CommandSender sender, String[] args) { - if(!sender.hasPermission("antivpn.command.*") - && !sender.hasPermission(command.permission())) { - sender.sendMessage(noPermission); - return; - } - - val children = command.children(); - - if(children.length > 0 && args.length > 0) { - for (Command child : children) { - if(child.name().equalsIgnoreCase(args[0]) || Arrays.stream(child.aliases()) - .anyMatch(alias -> alias.equalsIgnoreCase(args[0]))) { - if(!sender.hasPermission("antivpn.command.*") - && !sender.hasPermission(child.permission())) { - sender.sendMessage(noPermission); - return; - } - - sender.sendMessage(TextComponent - .fromLegacyText(ChatColor - .translateAlternateColorCodes('&', - child.execute(new BungeeCommandExecutor(sender), IntStream - .range(0, args.length - 1) - .mapToObj(i -> args[i + 1]).toArray(String[]::new))))); - return; - } - } - } - - - sender.sendMessage(TextComponent - .fromLegacyText(ChatColor - .translateAlternateColorCodes('&', - command.execute(new BungeeCommandExecutor(sender), args)))); - } - }); + BungeeCord.getInstance().getPluginManager().registerCommand(pluginInstance, new BungeeCommand(command)); } BungeeCord.getInstance().getLogger().info("Getting strings..."); diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommand.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommand.java new file mode 100644 index 0000000..775b6ac --- /dev/null +++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommand.java @@ -0,0 +1,81 @@ +package dev.brighten.antivpn.bungee.command; + +import lombok.val; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.ComponentBuilder; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.TabExecutor; + +import java.util.Arrays; +import java.util.stream.IntStream; + +public class BungeeCommand extends Command implements TabExecutor { + + private static final BaseComponent[] noPermission = new ComponentBuilder("No permission").color(ChatColor.RED) + .create(); + + private final dev.brighten.antivpn.command.Command command; + public BungeeCommand(dev.brighten.antivpn.command.Command command) { + super(command.name(), command.permission(), command.aliases()); + + this.command = command; + } + + @Override + public void execute(CommandSender sender, String[] args) { + if(!sender.hasPermission("antivpn.command.*") + && !sender.hasPermission(command.permission())) { + sender.sendMessage(noPermission); + return; + } + + val children = command.children(); + + if(children.length > 0 && args.length > 0) { + for (dev.brighten.antivpn.command.Command child : children) { + if(child.name().equalsIgnoreCase(args[0]) || Arrays.stream(child.aliases()) + .anyMatch(alias -> alias.equalsIgnoreCase(args[0]))) { + if(!sender.hasPermission("antivpn.command.*") + && !sender.hasPermission(child.permission())) { + sender.sendMessage(noPermission); + return; + } + + sender.sendMessage(TextComponent + .fromLegacyText(ChatColor + .translateAlternateColorCodes('&', + child.execute(new BungeeCommandExecutor(sender), IntStream + .range(0, args.length - 1) + .mapToObj(i -> args[i + 1]).toArray(String[]::new))))); + return; + } + } + } + + + sender.sendMessage(TextComponent + .fromLegacyText(ChatColor + .translateAlternateColorCodes('&', + command.execute(new BungeeCommandExecutor(sender), args)))); + } + + @Override + public Iterable onTabComplete(CommandSender sender, String[] args) { + val children = command.children(); + + if(children.length > 0 && args.length > 0) { + for (dev.brighten.antivpn.command.Command child : children) { + if(child.name().equalsIgnoreCase(args[0]) || Arrays.stream(child.aliases()) + .anyMatch(alias2 -> alias2.equalsIgnoreCase(args[0]))) { + return child.tabComplete(new BungeeCommandExecutor(sender), "alias", IntStream + .range(0, args.length - 1) + .mapToObj(i -> args[i + 1]).toArray(String[]::new)); + } + } + } + return command.tabComplete(new BungeeCommandExecutor(sender), "alias", args); + } +} diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeCommandExecutor.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommandExecutor.java similarity index 96% rename from Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeCommandExecutor.java rename to Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommandExecutor.java index 9dd506f..f6d77c8 100644 --- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeCommandExecutor.java +++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommandExecutor.java @@ -1,4 +1,4 @@ -package dev.brighten.antivpn.bungee; +package dev.brighten.antivpn.bungee.command; import dev.brighten.antivpn.AntiVPN; import dev.brighten.antivpn.api.APIPlayer;