diff --git a/BuildConfigUpdater/BuildConfigUpdater.iml b/BuildConfigUpdater/BuildConfigUpdater.iml index 274b3de..f14440c 100644 --- a/BuildConfigUpdater/BuildConfigUpdater.iml +++ b/BuildConfigUpdater/BuildConfigUpdater.iml @@ -12,6 +12,7 @@ + diff --git a/ButtonCore/pom.xml b/ButtonCore/pom.xml index e044b9a..013fe73 100755 --- a/ButtonCore/pom.xml +++ b/ButtonCore/pom.xml @@ -103,10 +103,10 @@ jitpack.io https://jitpack.io/ - - vault-repo - http://nexus.hc.to/content/repositories/pub_releases - + ess-repo http://repo.ess3.net/content/repositories/essrel/ diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java index ba6d8c5..3cd2a35 100644 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/Command2.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.function.Function; -import java.util.stream.Collectors; /** * The method name is the subcommand, use underlines (_) to add further subcommands. @@ -106,6 +105,8 @@ public abstract class Command2 final ChromaGamerBase cg; if (sendertype.isAssignableFrom(sender.getClass())) params.add(sender); //The command either expects a CommandSender or it is a Player, or some other expected type + else if (CommandSender.class.isAssignableFrom(sendertype) && sender instanceof Command2MCSender) + params.add(((Command2MCSender) sender).getSender()); else if (ChromaGamerBase.class.isAssignableFrom(sendertype) && sender instanceof Command2MCSender && (cg = ChromaGamerBase.getFromSender(((Command2MCSender) sender).getSender())) != null @@ -167,8 +168,9 @@ public abstract class Command2 //var scmdmap = subcommandStrings.computeIfAbsent(mainPath, k -> new HashSet<>()); //Used to display subcommands val scmdHelpList = new ArrayList(); Method mainMethod = null; + boolean nosubs = true; try { //Register the default handler first so it can be reliably overwritten - mainMethod = command.getClass().getMethod("def", CommandSender.class, String.class); + mainMethod = command.getClass().getMethod("def", Command2Sender.class, String.class); val cc = command.getClass().getAnnotation(CommandClass.class); var ht = cc == null ? new String[0] : cc.helpText(); if (ht.length > 0) @@ -188,8 +190,11 @@ public abstract class Command2 ht = getHelpText(method, ht, subcommand); subcommands.put(subcommand, new SubcommandData<>(method, command, ht)); //Result of the above (def) is that it will show the help text scmdHelpList.add(subcommand); + nosubs = false; } } + if (nosubs && scmdHelpList.size() > 0) + scmdHelpList.remove(scmdHelpList.size() - 1); //Remove Subcommands header if (mainMethod != null && !subcommands.containsKey(commandChar + path)) //Command specified by the class subcommands.put(commandChar + path, new SubcommandData<>(mainMethod, command, scmdHelpList.toArray(new String[0]))); if (mainMethod != null && !subcommands.containsKey(mainPath)) //Main command, typically the same as the above @@ -210,8 +215,9 @@ public abstract class Command2 if (cs != null) { val mname = cs.getString("method"); val params = cs.getString("params"); - val goodname = method.getName() + "(" + Arrays.stream(method.getParameterTypes()).map(cl -> cl.getCanonicalName()).collect(Collectors.joining(",")) + ")"; - if (goodname.equals(mname) && params != null) { + //val goodname = method.getName() + "(" + Arrays.stream(method.getGenericParameterTypes()).map(cl -> cl.getTypeName()).collect(Collectors.joining(",")) + ")"; + int i = mname.indexOf('('); //Check only the name - the whole method is still stored for backwards compatibility and in case it may be useful + if (i != -1 && method.getName().equals(mname.substring(0, i)) && params != null) { String[] both = Arrays.copyOf(ht, ht.length + 1); both[ht.length] = "§6Usage:§r " + subcommand + " " + params; ht = both; diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java index 6ee2264..588c744 100644 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2.java @@ -1,11 +1,10 @@ package buttondevteam.lib.chat; import lombok.Getter; -import org.bukkit.command.CommandSender; import java.util.function.Function; -public abstract class ICommand2 { +public abstract class ICommand2 { /** * Default handler for commands, can be used to copy the args too. * @@ -13,7 +12,7 @@ public abstract class ICommand2 { * @param args All of the arguments passed as is * @return The success of the command */ - public boolean def(CommandSender sender, @Command2.TextArg String args) { + public boolean def(TP sender, @Command2.TextArg String args) { return false; } @@ -24,16 +23,16 @@ public abstract class ICommand2 { * @param message The message to send to the sender * @return Always true so that the usage isn't shown */ - protected boolean respond(CommandSender sender, String message) { + protected boolean respond(TP sender, String message) { sender.sendMessage(message); return true; } private final String path; @Getter - private final Command2 manager; //TIL that if I use a raw type on a variable then none of the type args will work (including what's defined on a method, not on the type) + private final Command2 manager; //TIL that if I use a raw type on a variable then none of the type args will work (including what's defined on a method, not on the type) - public ICommand2(Command2 manager) { + public ICommand2(Command2 manager) { path = getcmdpath(); this.manager = manager; } diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2MC.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2MC.java index d051597..4ad997b 100644 --- a/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2MC.java +++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/ICommand2MC.java @@ -2,7 +2,7 @@ package buttondevteam.lib.chat; import buttondevteam.lib.architecture.ButtonPlugin; -public class ICommand2MC extends ICommand2 { +public class ICommand2MC extends ICommand2 { public ICommand2MC() { super(ButtonPlugin.getCommand2MC()); }