diff --git a/src/main/java/com/minelittlepony/unicopia/command/RaceArgument.java b/src/main/java/com/minelittlepony/unicopia/command/RaceArgument.java index 9442ee41..98d2eb76 100644 --- a/src/main/java/com/minelittlepony/unicopia/command/RaceArgument.java +++ b/src/main/java/com/minelittlepony/unicopia/command/RaceArgument.java @@ -2,12 +2,16 @@ package com.minelittlepony.unicopia.command; import java.util.Arrays; import java.util.Collection; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import com.minelittlepony.unicopia.Race; import com.mojang.brigadier.StringReader; import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; class RaceArgument implements ArgumentType { static final Collection EXAMPLES = Arrays.stream(Race.values()) @@ -20,6 +24,17 @@ class RaceArgument implements ArgumentType { return Race.fromName(reader.readUnquotedString(), Race.EARTH); } + @Override + public CompletableFuture listSuggestions(final CommandContext context, final SuggestionsBuilder builder) { + Arrays.stream(Race.values()) + .filter(Race::isUsable) + .map(i -> i.name().toLowerCase()) + .filter(i -> i.startsWith(builder.getRemaining().toLowerCase())) + .forEach(i -> builder.suggest(i.toLowerCase())); + + return builder.buildFuture(); + } + @Override public Collection getExamples() { return EXAMPLES;