This commit is contained in:
kento2 2026-04-15 10:58:36 +02:00
parent fc431bf8df
commit 81a36c0440
8 changed files with 111 additions and 23 deletions

View file

@ -1,17 +1,14 @@
package de.kencommand.api;
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;
import de.kencommand.api.structure.node.CommandNode;
import java.util.Iterator;
import java.util.Map;
public interface KenCommandApi<T> {
CommandNode<T> createNode(String... name);
<V> CommandArgument<T, V> createArgument(String id, ArgumentType<V> type);
void invoke(CommandNode<T> node, T sender, String[] args);
CommandExecutor<T> processLiterals(CommandNode<T> node, Iterator<String> argsIterator);
Map<String, ParsedArgument<T, ?>> parseArguments(CommandNode<T> node, Iterator<String> argsIterator);
}

View file

@ -1,6 +1,5 @@
package de.kencommand.api.structure.argument;
import de.kencommand.api.processing.CommandContext;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

View file

@ -0,0 +1,25 @@
package de.kencommand.api.structure.argument.suggestion;
import de.kencommand.api.processing.CommandContext;
import de.kencommand.api.structure.argument.SuggestionProvider;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.util.Set;
@NoArgsConstructor(access = AccessLevel.NONE)
public class NoSuggestionProvider implements SuggestionProvider<Object> {
@Getter(value = AccessLevel.PRIVATE, lazy = true)
private static final SuggestionProvider<Object> instance = new NoSuggestionProvider();
public static SuggestionProvider<Object> create() {
return getInstance();
}
@Override
public Set<String> suggest(CommandContext<Object> context) {
return Set.of();
}
}

View file

@ -0,0 +1,25 @@
package de.kencommand.api.structure.argument.types;
import de.kencommand.api.structure.argument.ArgumentType;
import de.kencommand.api.structure.argument.SuggestionProvider;
import de.kencommand.api.structure.argument.suggestion.NoSuggestionProvider;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class IntegerArgumentType implements ArgumentType<Integer> {
@Override
public Integer parseInput(String string) {
return Integer.parseInt(string);
}
@Override
public SuggestionProvider<?> defaultSuggestionProvider() {
return NoSuggestionProvider.create();
}
public static IntegerArgumentType create() {
return new IntegerArgumentType();
}
}