Add ArgumentType.parse() overload that can accept source context

This commit is contained in:
Gegy
2024-08-07 15:38:44 +02:00
parent b92c420b2a
commit b5419b186e
3 changed files with 6 additions and 2 deletions
+1 -1
View File
@@ -1 +1 @@
majorMinor: 1.2 majorMinor: 1.3
@@ -16,6 +16,10 @@ import java.util.concurrent.CompletableFuture;
public interface ArgumentType<T> { public interface ArgumentType<T> {
T parse(StringReader reader) throws CommandSyntaxException; T parse(StringReader reader) throws CommandSyntaxException;
default <S> T parse(final StringReader reader, final S source) throws CommandSyntaxException {
return parse(reader);
}
default <S> CompletableFuture<Suggestions> listSuggestions(final CommandContext<S> context, final SuggestionsBuilder builder) { default <S> CompletableFuture<Suggestions> listSuggestions(final CommandContext<S> context, final SuggestionsBuilder builder) {
return Suggestions.empty(); return Suggestions.empty();
} }
@@ -56,7 +56,7 @@ public class ArgumentCommandNode<S, T> extends CommandNode<S> {
@Override @Override
public void parse(final StringReader reader, final CommandContextBuilder<S> contextBuilder) throws CommandSyntaxException { public void parse(final StringReader reader, final CommandContextBuilder<S> contextBuilder) throws CommandSyntaxException {
final int start = reader.getCursor(); final int start = reader.getCursor();
final T result = type.parse(reader); final T result = type.parse(reader, contextBuilder.getSource());
final ParsedArgument<S, T> parsed = new ParsedArgument<>(start, reader.getCursor(), result); final ParsedArgument<S, T> parsed = new ParsedArgument<>(start, reader.getCursor(), result);
contextBuilder.withArgument(name, parsed); contextBuilder.withArgument(name, parsed);