Skip to content

Commit b0eb257

Browse files
author
damt
committed
[+] Fixed sub-commands %100
1 parent b70ea1d commit b0eb257

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

src/main/java/xyz/damt/command/command/Command.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import java.lang.reflect.Method;
1717
import java.util.ArrayList;
1818
import java.util.Arrays;
19-
import java.util.LinkedList;
2019
import java.util.List;
2120

2221
@AllArgsConstructor
@@ -76,15 +75,21 @@ public Command(Object object, String name, String[] aliases, Method method, Stri
7675
public final Command getSubCommand(String[] args) {
7776
for (Command command : subCommands) {
7877
String[] commandArg = command.getName().split(" ");
78+
String[] original = commandArg;
7979

8080
List<String> strings = new ArrayList<>(Arrays.asList(commandArg));
81+
82+
System.out.println("[0] - " + strings);
83+
8184
List<String> argsList = new ArrayList<>(Arrays.asList(args));
8285

8386
strings.removeIf(s -> !argsList.contains(s));
84-
8587
commandArg = strings.toArray(new String[0]);
8688

87-
if (commandArg.length != 0 && commandArg[commandArg.length - 1].equalsIgnoreCase(args[args.length - 1])) {
89+
System.out.println("[1] - " + strings);
90+
System.out.println("[2] - " + Arrays.toString(args));
91+
92+
if ((original.length - 1) == commandArg.length && commandArg.length != 0 && commandArg[commandArg.length - 1].equalsIgnoreCase(args[commandArg.length - 1])) {
8893
return command;
8994
}
9095
}
@@ -163,7 +168,17 @@ public void execute(CommandSender commandSender, String[] args, boolean skip) {
163168

164169
for (CommandParameter commandParameter : commandParameters) {
165170
try {
166-
objects.add(commandParameter.getCommandProvider().provide(args[commandParameters.indexOf(commandParameter)]));
171+
if (this.subCommand && subCommand != null && !skip) {
172+
String[] subArgs = subCommand.getName().split(" ");
173+
objects.add(commandParameter.getCommandProvider().provide(args[commandParameters.indexOf(commandParameter) + (subArgs.length - 1)]));
174+
} else {
175+
objects.add(commandParameter.getCommandProvider().provide(args[commandParameters.indexOf(commandParameter)]));
176+
}
177+
} catch (ArrayIndexOutOfBoundsException exception) {
178+
if (subCommand != null && !skip) {
179+
commandSender.sendMessage(ChatColor.RED + "Usage: " + subCommand.getUsage());
180+
return;
181+
}
167182
} catch (CommandProviderNullException e) {
168183
if (!commandParameter.isOptional()) {
169184
if (e.getMessage() == null) {

0 commit comments

Comments
 (0)