Class CommandManager<S>

java.lang.Object
io.github.projectunified.craftcommand.CommandManager<S>
Type Parameters:
S - sender type
Direct Known Subclasses:
BukkitCommandManager, PaperCommandManager, StandaloneCommandManager

public abstract class CommandManager<S> extends Object
Base command manager. Handles resolver registration, message formatting, and error handling.
  • Constructor Details

  • Method Details

    • filterSuggestions

      public static List<String> filterSuggestions(Collection<String> suggestions, String current)
      Filters suggestions by prefix (case-insensitive).
    • register

      public abstract void register(Object command)
      Registers a command.
    • getCommandInfo

      public abstract List<CommandInfo> getCommandInfo(Object commandInstance)
      Gets command metadata for a registered command instance.
      Parameters:
      commandInstance - the original command instance passed to register(Object)
      Returns:
      the command info list, or empty list if not found
    • formatMessage

      public String formatMessage(String key, String defaultValue, Object... args)
      Formats a message by key. Override for i18n. Default: String.format(defaultValue, args).
    • registerResolver

      public <T> void registerResolver(Class<T> type, ArgumentResolver<S,T> resolver)
      Registers a resolver for a specific type.
    • registerProvider

      public void registerProvider(Function<Class<?>,ArgumentResolver<S,?>> provider)
      Registers a dynamic resolver provider.
    • registerSenderResolver

      public <T> void registerSenderResolver(Class<T> type, Function<S,T> resolver)
      Registers a global sender resolver.
      Parameters:
      type - the target sender type
      resolver - function that converts the base sender to the target type
    • resolveSender

      public <T> T resolveSender(Class<T> type, S sender)
      Resolves the sender to the target type using registered sender resolvers.
      Parameters:
      type - the target sender type
      sender - the base sender
      Returns:
      the resolved sender, or null if no resolver is registered
    • resolveParameter

      public <T> T resolveParameter(S sender, Class<T> type, String[] args, int[] indexHolder, String paramName, boolean optional, String defaultValue) throws Exception
      Resolves a parameter, advancing the index holder. Used by generated wrappers.
      Throws:
      CommandException - when a required parameter is missing
      Exception
    • getResolver

      public <T> ArgumentResolver<S,T> getResolver(Class<T> type)
      Gets the resolver for a type. Checks exact match, hierarchy, providers, then sender fallback.
    • getErrorHandler

      public BiConsumer<S,Exception> getErrorHandler()
    • setErrorHandler

      public void setErrorHandler(BiConsumer<S,Exception> errorHandler)