Simplified suggestions

This commit is contained in:
Adrian
2023-04-28 18:25:19 -05:00
parent 7186c4de6c
commit c36ac056d5
@@ -5,7 +5,6 @@ import com.mojang.brigadier.Command;
import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.builder.RequiredArgumentBuilder; import com.mojang.brigadier.builder.RequiredArgumentBuilder;
import com.mojang.brigadier.context.ParsedArgument;
import com.mojang.brigadier.tree.LiteralCommandNode; import com.mojang.brigadier.tree.LiteralCommandNode;
import com.velocitypowered.api.command.BrigadierCommand; import com.velocitypowered.api.command.BrigadierCommand;
import com.velocitypowered.api.command.CommandManager; import com.velocitypowered.api.command.CommandManager;
@@ -21,8 +20,6 @@ import eu.endermite.commandwhitelist.velocity.CommandWhitelistVelocity;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
public final class VelocityMainCommand { public final class VelocityMainCommand {
@Inject @Inject
@@ -50,8 +47,7 @@ public final class VelocityMainCommand {
.requires(src -> src.hasPermission(CWPermission.ADMIN.permission())) .requires(src -> src.hasPermission(CWPermission.ADMIN.permission()))
.then(RequiredArgumentBuilder.<CommandSource, String>argument("group", StringArgumentType.word()) .then(RequiredArgumentBuilder.<CommandSource, String>argument("group", StringArgumentType.word())
.suggests((ctx, builder) -> { .suggests((ctx, builder) -> {
groupSuggestions(plugin.getConfigCache(), ctx.getArguments().get("group")) plugin.getConfigCache().getGroupList().keySet().forEach(builder::suggest);
.forEach(builder::suggest);
return builder.buildFuture(); return builder.buildFuture();
}) })
.then(RequiredArgumentBuilder.<CommandSource, String>argument("command", StringArgumentType.word()) .then(RequiredArgumentBuilder.<CommandSource, String>argument("command", StringArgumentType.word())
@@ -59,7 +55,6 @@ public final class VelocityMainCommand {
CWGroup group = plugin.getConfigCache().getGroupList().get(ctx.getArgument("group", String.class)); CWGroup group = plugin.getConfigCache().getGroupList().get(ctx.getArgument("group", String.class));
if (group == null) return builder.buildFuture(); if (group == null) return builder.buildFuture();
String stringArgument = stringArgument(ctx.getArguments().get("command"));
for (String cmd : plugin.getServerCommands()) { for (String cmd : plugin.getServerCommands()) {
if (cmd.charAt(0) == '/') if (cmd.charAt(0) == '/')
cmd = cmd.substring(1); cmd = cmd.substring(1);
@@ -69,8 +64,7 @@ public final class VelocityMainCommand {
cmd = cmdSplit[1]; cmd = cmdSplit[1];
} }
if (group.getCommands().contains(cmd)) continue; if (group.getCommands().contains(cmd)) continue;
if (stringArgument == null || cmd.startsWith(stringArgument)) builder.suggest(cmd);
builder.suggest(cmd);
} }
return builder.buildFuture(); return builder.buildFuture();
}) })
@@ -93,8 +87,7 @@ public final class VelocityMainCommand {
.requires(src -> src.hasPermission(CWPermission.ADMIN.permission())) .requires(src -> src.hasPermission(CWPermission.ADMIN.permission()))
.then(RequiredArgumentBuilder.<CommandSource, String>argument("group", StringArgumentType.word()) .then(RequiredArgumentBuilder.<CommandSource, String>argument("group", StringArgumentType.word())
.suggests((ctx, builder) -> { .suggests((ctx, builder) -> {
groupSuggestions(plugin.getConfigCache(), ctx.getArguments().get("group")) plugin.getConfigCache().getGroupList().keySet().forEach(builder::suggest);
.forEach(builder::suggest);
return builder.buildFuture(); return builder.buildFuture();
}) })
.then(RequiredArgumentBuilder.<CommandSource, String>argument("command", StringArgumentType.word()) .then(RequiredArgumentBuilder.<CommandSource, String>argument("command", StringArgumentType.word())
@@ -102,10 +95,8 @@ public final class VelocityMainCommand {
CWGroup group = plugin.getConfigCache().getGroupList().get(ctx.getArgument("group", String.class)); CWGroup group = plugin.getConfigCache().getGroupList().get(ctx.getArgument("group", String.class));
if (group == null) return builder.buildFuture(); if (group == null) return builder.buildFuture();
String stringArgument = stringArgument(ctx.getArguments().get("command"));
for (String s : group.getCommands()) { for (String s : group.getCommands()) {
if (stringArgument == null || s.startsWith(stringArgument)) builder.suggest(s);
builder.suggest(s);
} }
return builder.buildFuture(); return builder.buildFuture();
}) })
@@ -149,19 +140,4 @@ public final class VelocityMainCommand {
final BrigadierCommand command = new BrigadierCommand(node); final BrigadierCommand command = new BrigadierCommand(node);
commandManager.register(commandManager.metaBuilder(command).plugin(plugin).build(), command); commandManager.register(commandManager.metaBuilder(command).plugin(plugin).build(), command);
} }
private List<String> groupSuggestions(ConfigCache configCache, ParsedArgument<CommandSource, ?> argument) {
final String stringArgument = stringArgument(argument);
List<String> groups = new ArrayList<>();
for (String s : configCache.getGroupList().keySet()) {
if (stringArgument == null || s.startsWith(stringArgument))
groups.add(s);
}
return groups;
}
private String stringArgument(ParsedArgument<CommandSource, ?> argument) {
return argument == null
? null : (String) argument.getResult();
}
} }