diff --git a/src/main/java/de/kencommand/impl/KenCommandApiImpl.java b/src/main/java/de/kencommand/impl/KenCommandApiImpl.java index cc28dd8..5fab43d 100644 --- a/src/main/java/de/kencommand/impl/KenCommandApiImpl.java +++ b/src/main/java/de/kencommand/impl/KenCommandApiImpl.java @@ -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 implements KenCommandApi { public void invoke(CommandNode 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 processLiterals(CommandNode commandNode, Iterator iter) { + private CommandNode processLiterals(CommandNode commandNode, Iterator 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();