summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java')
-rw-r--r--src/main/java/com/mojang/brigadier/suggestion/SuggestionsBuilder.java80
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);
+ }
+}