This commit is contained in:
kento2 2026-04-15 14:24:12 +02:00
parent 81a36c0440
commit f5109f9789

View file

@ -1,7 +1,6 @@
package de.kencommand.impl;
import de.kencommand.api.KenCommandApi;
import de.kencommand.api.processing.CommandExecutor;
import de.kencommand.api.processing.ParsedArgument;
import de.kencommand.api.structure.argument.ArgumentType;
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) {
var iter = Arrays.stream(args).iterator();
var executor = processLiterals(node, iter);
var parsedArguments = parseArguments(node, iter);
executor.execute(new CommandContextImpl<>(sender, parsedArguments));
var executableLiteral = processLiterals(node, iter);
var parsedArguments = parseArguments(executableLiteral, iter);
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()) {
// literals/arguments are optional if the node itself is executable
if (commandNode.getExecutor() == null) throw new RuntimeException("no literal given but required");
return commandNode.getExecutor();
return commandNode;
}
if (commandNode.getLiterals().isEmpty()) {
return commandNode.getExecutor();
return commandNode;
}
final var arg = iter.next();