diff --git a/src/main/java/buttondevteam/core/CommandCaller.java b/src/main/java/buttondevteam/core/CommandCaller.java
index 8d7b86b..29ce030 100644
--- a/src/main/java/buttondevteam/core/CommandCaller.java
+++ b/src/main/java/buttondevteam/core/CommandCaller.java
@@ -56,20 +56,18 @@ public class CommandCaller implements CommandExecutor {
path += " " + arg;
TBMCCommandBase cmd = TBMCChatAPI.GetCommands().get(path);
int argc = 0;
- while (cmd == null && path.contains(" ")) {
+ String[] subcmds = null;
+ while (cmd == null && (subcmds = TBMCChatAPI.GetSubCommands(path, sender)).length == 0 && path.contains(" ")) {
path = path.substring(0, path.lastIndexOf(' '));
argc++;
cmd = TBMCChatAPI.GetCommands().get(path);
}
if (cmd == null) {
- String[] subcmds = TBMCChatAPI.GetSubCommands(path, sender);
- if (subcmds.length > 0)
+ if (subcmds == null || subcmds.length > 0)
sender.sendMessage(subcmds);
else {
- final String errormsg = "§cYou don't have access to any of this command's subcommands.";
+ final String errormsg = "§cYou don't have access to any of this command's subcommands or it doesn't have any.";
sender.sendMessage(errormsg);
- if (!(sender instanceof ConsoleCommandSender))
- Bukkit.getConsoleSender().sendMessage(errormsg);
}
return true;
}
diff --git a/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java b/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java
index 8039c55..3ed861d 100644
--- a/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java
+++ b/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java
@@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Set;
+import java.util.function.Consumer;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
@@ -42,7 +43,8 @@ public class TBMCChatAPI {
}
/**
- * Returns messages formatted for Minecraft chat listing the subcommands of the command.
+ * Returns messages formatted for Minecraft chat listing the subcommands of the command.
+ * Returns a header if subcommands were found, otherwise returns an empty array.
*
* @param command
* The command which we want the subcommands of
@@ -52,20 +54,24 @@ public class TBMCChatAPI {
*/
public static String[] GetSubCommands(String command, CommandSender sender) {
ArrayList cmds = new ArrayList();
- cmds.add("§6---- Subcommands ----");
+ Consumer addToCmds = cmd -> {
+ if (cmds.size() == 0)
+ cmds.add("§6---- Subcommands ----");
+ cmds.add(cmd);
+ };
for (TBMCCommandBase cmd : TBMCChatAPI.GetCommands().values()) {
if (cmd.GetCommandPath().startsWith(command + " ")) {
int ind = cmd.GetCommandPath().indexOf(' ', command.length() + 2);
if (ind >= 0) {
String newcmd = cmd.GetCommandPath().substring(0, ind);
if (!cmds.contains("/" + newcmd))
- cmds.add("/" + newcmd);
+ addToCmds.accept("/" + newcmd);
}
if (cmd.GetPlayerOnly() && !(sender instanceof Player))
continue;
if (cmd.GetModOnly() && !MainPlugin.permission.has(sender, "tbmc.admin"))
continue;
- cmds.add("/" + cmd.GetCommandPath());
+ addToCmds.accept("/" + cmd.GetCommandPath());
}
}
return cmds.toArray(new String[cmds.size()]);