From 1aa9cd3552dd52746615314d4a83a6b57218a831 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 13 Oct 2020 02:49:48 +0200 Subject: [PATCH] Attempt to support main command aliases --- .../main/java/buttondevteam/lib/chat/Command2.java | 6 +++++- .../java/buttondevteam/lib/chat/Command2MC.java | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2.java b/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2.java index 66ef830..9f26a80 100644 --- a/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2.java @@ -284,7 +284,11 @@ public abstract class Command2, TP extends Command2Send public abstract void registerCommand(TC command); - protected List> registerCommand(TC command, @SuppressWarnings("SameParameterValue") char commandChar) { + protected List> registerCommand(TC command, char commandChar) { + return registerCommand(command, command.getCommandPath(), commandChar); + } + + protected List> registerCommand(TC command, String commandPath, @SuppressWarnings("SameParameterValue") char commandChar) { this.commandChar = commandChar; val path = command.getCommandPath(); int x = path.indexOf(' '); diff --git a/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java b/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java index 87cadd2..3f4fc71 100644 --- a/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java +++ b/Chroma-Core/src/main/java/buttondevteam/lib/chat/Command2MC.java @@ -33,6 +33,7 @@ import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.function.Supplier; +import java.util.regex.Matcher; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -52,6 +53,10 @@ public class Command2MC extends Command2 implemen mainpath = cpath.substring(0, i == -1 ? cpath.length() : i); }*/ var subcmds = super.registerCommand(command, '/'); + var bcmd = registerOfficially(command, subcmds); + if (bcmd != null) + for (String alias : bcmd.getAliases()) + super.registerCommand(command, command.getCommandPath().replaceFirst("^" + bcmd.getName(), Matcher.quoteReplacement(alias)), '/'); var perm = "chroma.command." + command.getCommandPath().replace(' ', '.'); if (Bukkit.getPluginManager().getPermission(perm) == null) //Check needed for plugin reset @@ -73,8 +78,6 @@ public class Command2MC extends Command2 implemen Bukkit.getPluginManager().addPermission(new Permission(permGroup, PermissionDefault.OP)); //Do not allow any commands that belong to a group } - - registerOfficially(command, subcmds); } @Override @@ -206,8 +209,8 @@ public class Command2MC extends Command2 implemen private boolean shouldRegisterOfficially = true; - private void registerOfficially(ICommand2MC command, List> subcmds) { - if (!shouldRegisterOfficially || command.getPlugin() == null) return; + private Command registerOfficially(ICommand2MC command, List> subcmds) { + if (!shouldRegisterOfficially || command.getPlugin() == null) return null; try { var cmdmap = (SimpleCommandMap) Bukkit.getServer().getClass().getMethod("getCommandMap").invoke(Bukkit.getServer()); var path = command.getCommandPath(); @@ -231,12 +234,14 @@ public class Command2MC extends Command2 implemen //System.out.println("Registering to " + command.getPlugin().getName()); if (CommodoreProvider.isSupported()) TabcompleteHelper.registerTabcomplete(command, subcmds, bukkitCommand); + return bukkitCommand; } catch (Exception e) { if (command.getComponent() == null) TBMCCoreAPI.SendException("Failed to register command in command map!", e, command.getPlugin()); else TBMCCoreAPI.SendException("Failed to register command in command map!", e, command.getComponent()); shouldRegisterOfficially = false; + return null; } }