fix it
This commit is contained in:
parent
81a36c0440
commit
f5109f9789
1 changed files with 6 additions and 7 deletions
|
|
@ -1,7 +1,6 @@
|
||||||
package de.kencommand.impl;
|
package de.kencommand.impl;
|
||||||
|
|
||||||
import de.kencommand.api.KenCommandApi;
|
import de.kencommand.api.KenCommandApi;
|
||||||
import de.kencommand.api.processing.CommandExecutor;
|
|
||||||
import de.kencommand.api.processing.ParsedArgument;
|
import de.kencommand.api.processing.ParsedArgument;
|
||||||
import de.kencommand.api.structure.argument.ArgumentType;
|
import de.kencommand.api.structure.argument.ArgumentType;
|
||||||
import de.kencommand.api.structure.argument.CommandArgument;
|
import de.kencommand.api.structure.argument.CommandArgument;
|
||||||
|
|
@ -34,20 +33,20 @@ public class KenCommandApiImpl<T> implements KenCommandApi<T> {
|
||||||
public void invoke(CommandNode<T> node, T sender, String[] args) {
|
public void invoke(CommandNode<T> node, T sender, String[] args) {
|
||||||
var iter = Arrays.stream(args).iterator();
|
var iter = Arrays.stream(args).iterator();
|
||||||
|
|
||||||
var executor = processLiterals(node, iter);
|
var executableLiteral = processLiterals(node, iter);
|
||||||
var parsedArguments = parseArguments(node, iter);
|
var parsedArguments = parseArguments(executableLiteral, iter);
|
||||||
executor.execute(new CommandContextImpl<>(sender, parsedArguments));
|
executableLiteral.getExecutor().execute(new CommandContextImpl<>(sender, parsedArguments));
|
||||||
}
|
}
|
||||||
|
|
||||||
private CommandExecutor<T> processLiterals(CommandNode<T> commandNode, Iterator<String> iter) {
|
private CommandNode<T> processLiterals(CommandNode<T> commandNode, Iterator<String> iter) {
|
||||||
if (!iter.hasNext()) {
|
if (!iter.hasNext()) {
|
||||||
// literals/arguments are optional if the node itself is executable
|
// literals/arguments are optional if the node itself is executable
|
||||||
if (commandNode.getExecutor() == null) throw new RuntimeException("no literal given but required");
|
if (commandNode.getExecutor() == null) throw new RuntimeException("no literal given but required");
|
||||||
return commandNode.getExecutor();
|
return commandNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (commandNode.getLiterals().isEmpty()) {
|
if (commandNode.getLiterals().isEmpty()) {
|
||||||
return commandNode.getExecutor();
|
return commandNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
final var arg = iter.next();
|
final var arg = iter.next();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue