Merge pull request #44 from FrankHeijden/fix/subcommand-brigadier-highlight

Register each alias as individual subcommand
This commit is contained in:
Frank van der Heijden 2021-12-20 19:58:47 +01:00 committed by GitHub
commit 2f15602f1d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 21 deletions

View file

@ -78,17 +78,17 @@ public class BukkitCommandServerUtils extends CommandServerUtils<BukkitPlugin, P
.withSuggestionsProvider((context, s) -> supportedConfigNames)
.build());
manager.command(buildSubcommand(builder, "enableplugin")
registerSubcommand(manager, builder, "enableplugin", subcommandBuilder -> subcommandBuilder
.argument(getArgument("plugins"))
.handler(this::handleEnablePlugin));
manager.command(buildSubcommand(builder, "disableplugin")
registerSubcommand(manager, builder, "disableplugin", subcommandBuilder -> subcommandBuilder
.argument(new PluginsArgument<>(
true,
"plugins",
new PluginsArgument.PluginsParser<>(plugin, arrayCreator, getRawPath("disableplugin"))
))
.handler(this::handleDisablePlugin));
manager.command(buildSubcommand(builder, "reloadconfig")
registerSubcommand(manager, builder, "reloadconfig", subcommandBuilder -> subcommandBuilder
.argument(getArgument("config"))
.handler(this::handleReloadConfig));
}

View file

@ -56,43 +56,43 @@ public abstract class CommandServerUtils<U extends ServerUtilsPlugin<P, ?, C, ?,
manager.command(builder
.handler(this::handleHelpCommand));
manager.command(buildSubcommand(builder, "help")
registerSubcommand(manager, builder, "help", subcommandBuilder -> subcommandBuilder
.handler(this::handleHelpCommand));
manager.command(buildSubcommand(builder, "reload")
registerSubcommand(manager, builder, "reload", subcommandBuilder -> subcommandBuilder
.handler(this::handleReload));
manager.command(buildSubcommand(builder, "restart")
registerSubcommand(manager, builder, "restart", subcommandBuilder -> subcommandBuilder
.handler(this::handleRestart));
manager.command(buildSubcommand(builder, "loadplugin")
registerSubcommand(manager, builder, "loadplugin", subcommandBuilder -> subcommandBuilder
.argument(getArgument("jarFiles"))
.handler(this::handleLoadPlugin));
manager.command(buildSubcommand(builder, "unloadplugin")
registerSubcommand(manager, builder, "unloadplugin", subcommandBuilder -> subcommandBuilder
.argument(new PluginsArgument<>(
true,
"plugins",
new PluginsArgument.PluginsParser<>(plugin, arrayCreator, getRawPath("unloadplugin"))
))
.handler(this::handleUnloadPlugin));
manager.command(buildSubcommand(builder, "reloadplugin")
registerSubcommand(manager, builder, "reloadplugin", subcommandBuilder -> subcommandBuilder
.argument(new PluginsArgument<>(
true,
"plugins",
new PluginsArgument.PluginsParser<>(plugin, arrayCreator, getRawPath("reloadplugin"))
))
.handler(this::handleReloadPlugin));
manager.command(buildSubcommand(builder, "watchplugin")
registerSubcommand(manager, builder, "watchplugin", subcommandBuilder -> subcommandBuilder
.argument(new PluginsArgument<>(
true,
"plugins",
new PluginsArgument.PluginsParser<>(plugin, arrayCreator, getRawPath("watchplugin"))
))
.handler(this::handleWatchPlugin));
manager.command(buildSubcommand(builder, "unwatchplugin")
registerSubcommand(manager, builder, "unwatchplugin", subcommandBuilder -> subcommandBuilder
.argument(getArgument("plugin"))
.handler(this::handleUnwatchPlugin));
manager.command(buildSubcommand(builder, "plugininfo")
registerSubcommand(manager, builder, "plugininfo", subcommandBuilder -> subcommandBuilder
.argument(getArgument("plugin"))
.handler(this::handlePluginInfo));
manager.command(buildSubcommand(builder, "commandinfo")
registerSubcommand(manager, builder, "commandinfo", subcommandBuilder -> subcommandBuilder
.argument(getArgument("command"))
.handler(this::handleCommandInfo));
}

View file

@ -8,9 +8,12 @@ import cloud.commandframework.arguments.flags.CommandFlag;
import cloud.commandframework.permission.CommandPermission;
import cloud.commandframework.permission.Permission;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.UnaryOperator;
import java.util.stream.Stream;
import net.frankheijden.serverutils.common.config.ServerUtilsConfig;
import net.frankheijden.serverutils.common.entities.ServerUtilsAudience;
import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin;
@ -58,16 +61,27 @@ public abstract class ServerUtilsCommand<U extends ServerUtilsPlugin<?, ?, C, ?,
/**
* Builds a subcommand from the config.
*/
public Command.Builder<C> buildSubcommand(Command.Builder<C> builder, String subcommandName) {
public void registerSubcommand(
CommandManager<C> manager,
Command.Builder<C> builder,
String subcommandName,
UnaryOperator<Command.Builder<C>> builderUnaryOperator
) {
CommandElement subcommand = parseSubcommand(subcommandName);
builder = builder
.literal(subcommand.getMain(), subcommand.getDescription(), subcommand.getAliases())
.permission(subcommand.getPermission());
for (CommandElement flagElement : subcommand.getFlags()) {
builder = builder.flag(createFlag(flagElement));
}
return builder;
Stream.concat(
Stream.of(subcommand.getMain()),
Arrays.stream(subcommand.getAliases())
).map(cmd -> {
Command.Builder<C> subcommandBuilder = builder
.literal(cmd, subcommand.getDescription())
.permission(subcommand.getPermission());
for (CommandElement flagElement : subcommand.getFlags()) {
subcommandBuilder = subcommandBuilder.flag(createFlag(flagElement));
}
return builderUnaryOperator.apply(subcommandBuilder).build();
}).forEach(manager::command);
}
/**