Register each alias as individual subcommand
such that brigadier can properly autocomplete / highlight
This commit is contained in:
parent
51df8e35f1
commit
3589d9870e
3 changed files with 35 additions and 21 deletions
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
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()) {
|
||||
builder = builder.flag(createFlag(flagElement));
|
||||
subcommandBuilder = subcommandBuilder.flag(createFlag(flagElement));
|
||||
}
|
||||
return builder;
|
||||
|
||||
return builderUnaryOperator.apply(subcommandBuilder).build();
|
||||
}).forEach(manager::command);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue