-
-
Notifications
You must be signed in to change notification settings - Fork 0
API Reference
Central registry for:
- commands
- argument resolvers
- tab completers
- the optional tab completion listener
Main methods:
CommandManager(JavaPlugin plugin, boolean autoRegisterTabCompleteManager)
RegisteredCommand registerCommand(CustomCommand customCommand)
RegisteredCommand registerCommand(CustomCommand customCommand, String permission, String... names)
void unregisterCommand(RegisteredCommand registeredCommand)
<T> void registerArgumentResolver(Class<T> clazz, ArgumentResolver<T> argumentResolver)
void unregisterArgumentResolver(Class<?> clazz)
void registerTabCompleter(String id, Function<CommandSender, Collection<String>> resolver)
void registerTabCompleter(Class<?> clazz, BiFunction<CommandSender, Argument, Collection<String>> resolver)
void unregisterTabCompleter(String id)
void unregisterTabCompleter(Class<?> clazz)
void setTabCompleteManager(CommandTabCompleteManager tabCompleteManager)Base class for all annotation-driven command classes.
Helper method:
protected void sendUseMessage(CommandSender sender, String usage)Runtime wrapper around a command definition. Extends Bukkit's org.bukkit.command.Command and manages:
- the primary name and aliases
- the base permission
- the default executor
- the unknown executor
- all subcommand executors
Runtime representation of a single command handler method. It stores:
- method metadata
- sender restriction
- parsed argument metadata
- permission requirement
- tab completion mapping
Listener that plugs into Paper async tab completion and resolves suggestions for commands managed by the framework.
Class-level command name and aliases.
Class-level or method-level permission requirement.
Default handler for the base command.
Subcommand handler annotation. Supports aliases and multi-word labels.
Fallback handler for unmatched subcommands, with optional generated help subcommand support.
Explicit tab completion declaration for handler arguments.
Custom argument display name for usage messages.
Marks an optional argument.
Marks an argument that consumes the remaining raw input as one string.
Metadata object describing one parsed command parameter.
Fields:
nameclazzpositionoptionaljoin
Functional interface:
ArgumentResult<T> resolve(CommandSender sender, String input, Argument argument)Resolver return object containing:
resultstatus
SUCCESSFAIL
Internal sender restriction enum:
ALLPLAYERCONSOLE
Public static helpers:
sendMessage(CommandSender sender, String... message)join(Object[] array, String separator)join(Iterable<?> iterable, String separator)getEnumByName(Class<? extends Enum<?>> clazz, String name)getEnumNames(Class<? extends Enum<?>> clazz)parseDuration(String text)
- create
CommandManager - register custom argument resolvers and tab completers
- register command classes
- let
RegisteredCommandandCommandExecutorhandle dispatch
That is exactly how larger projects usually structure their command bootstrap.