diff options
author | md_5 <git@md-5.net> | 2018-07-16 21:03:46 +1000 |
---|---|---|
committer | md_5 <git@md-5.net> | 2018-07-16 21:03:46 +1000 |
commit | 1fccb8950186caae273e45f1b08ebe2797214293 (patch) | |
tree | 9129ff519230fff116787b1ec766755d174b4f4e /src/main/java/com/mojang/brigadier/suggestion | |
parent | 926ea104593c8c91231dea640277b79a9b5b1991 (diff) | |
download | craftbukkit-1fccb8950186caae273e45f1b08ebe2797214293.tar craftbukkit-1fccb8950186caae273e45f1b08ebe2797214293.tar.gz craftbukkit-1fccb8950186caae273e45f1b08ebe2797214293.tar.lz craftbukkit-1fccb8950186caae273e45f1b08ebe2797214293.tar.xz craftbukkit-1fccb8950186caae273e45f1b08ebe2797214293.zip |
Fix completion of multiple arguments in Bukkit commands
Diffstat (limited to 'src/main/java/com/mojang/brigadier/suggestion')
-rw-r--r-- | src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java b/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java new file mode 100644 index 00000000..23c7c2c0 --- /dev/null +++ b/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java @@ -0,0 +1,80 @@ +package com.mojang.brigadier.suggestion; + +import com.mojang.brigadier.Message; +import com.mojang.brigadier.context.StringRange; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; + +public class SuggestionsBuilder { + private final String input; + public int start; + public String remaining; + private final List<Suggestion> result = new ArrayList<>(); + + public SuggestionsBuilder(final String input, final int start) { + this.input = input; + this.start = start; + this.remaining = input.substring(start); + } + + public String getInput() { + return input; + } + + public int getStart() { + return start; + } + + public String getRemaining() { + return remaining; + } + + public Suggestions build() { + return Suggestions.create(input, result); + } + + public CompletableFuture<Suggestions> buildFuture() { + return CompletableFuture.completedFuture(build()); + } + + public SuggestionsBuilder suggest(final String text) { + if (text.equals(remaining)) { + return this; + } + result.add(new Suggestion(StringRange.between(start, input.length()), text)); + return this; + } + + public SuggestionsBuilder suggest(final String text, final Message tooltip) { + if (text.equals(remaining)) { + return this; + } + result.add(new Suggestion(StringRange.between(start, input.length()), text, tooltip)); + return this; + } + + public SuggestionsBuilder suggest(final int value) { + result.add(new IntegerSuggestion(StringRange.between(start, input.length()), value)); + return this; + } + + public SuggestionsBuilder suggest(final int value, final Message tooltip) { + result.add(new IntegerSuggestion(StringRange.between(start, input.length()), value, tooltip)); + return this; + } + + public SuggestionsBuilder add(final SuggestionsBuilder other) { + result.addAll(other.result); + return this; + } + + public SuggestionsBuilder createOffset(final int start) { + return new SuggestionsBuilder(input, start); + } + + public SuggestionsBuilder restart() { + return new SuggestionsBuilder(input, start); + } +} |