Class Command


  • public abstract class Command
    extends Object
    Represent a Plugin class that can execute. Just like we use the terminal, we could use it to executing some commands. This is an important way to interact with FocessQQ Bot. You should declare CommandType to this class ,or you should register it with your plugin manually.
    • Constructor Detail

      • Command

        public Command​(@NotNull
                       String name,
                       @NotNull
                       String... aliases)
        Instance a Command Class with special name and aliases.
        Parameters:
        name - the name of the command
        aliases - the aliases of the command
        Throws:
        CommandLoadException - if there is any exception thrown in the initializing process
      • Command

        protected Command()
        Provide a constructor to help CommandType design. Never instance it!Command will be instanced when this class is loaded automatically.
    • Method Detail

      • unregister

        public static void unregister​(Plugin plugin)
        Unregister all commands in the plugin
        Parameters:
        plugin - the plugin that the commands that need to be unregistered belongs to
      • unregisterAll

        public static boolean unregisterAll()
        Unregister all commands
        Returns:
        true if there are some commands not belonging to MainPlugin not been unregistered, false otherwise
      • getCommands

        @NotNull
        public static List<Command> getCommands()
        Get all commands
        Returns:
        All commands as a list
      • register

        public static void register​(@NotNull
                                    Plugin plugin,
                                    @NotNull
                                    Command command)
        Register the command
        Parameters:
        plugin - the plugin the command belongs to
        command - the command that need to be registered
        Throws:
        CommandDuplicateException - if the command name already exists in the registered commands
        IllegalStateException - if the command is not initialized
      • isRegistered

        public boolean isRegistered()
      • getPlugin

        @NotNull
        public Plugin getPlugin()
      • unregister

        public void unregister()
        Unregister this command
      • getName

        @NotNull
        public String getName()
      • getAliases

        @NotNull
        public List<String> getAliases()
      • getExecutorPermission

        public java.util.function.Predicate<CommandSender> getExecutorPermission()
      • setExecutorPermission

        public void setExecutorPermission​(@NotNull
                                          java.util.function.Predicate<CommandSender> executorPermission)
      • addExecutor

        @NotNull
        public final Command.Executor addExecutor​(@NotNull
                                                  CommandExecutor executor,
                                                  @NotNull
                                                  CommandArgument<?>... commandArguments)
        Add default executor to define how to execute this command. for example : this.addExecutor(... ,CommandArgument.ofString("example"),CommandArgument.ofString()); which means that it runs when you execute the command with "example" "xxx". this.addExecutor(...); which means that it runs when you just execute the command without anything.
        Parameters:
        executor - the executor to define this command
        commandArguments - the defined arguments for this executor
        Returns:
        the Executor to define other proprieties
      • setPermission

        public void setPermission​(CommandPermission permission)
        Set the default permission
        Parameters:
        permission - the target permission the command need
      • init

        public abstract void init()
        Used to initialize the command (the primary goal is to define the default executors)
      • usage

        @NotNull
        public abstract List<String> usage​(CommandSender sender)
        Used to get help information when execute this command with wrong arguments or the executor returns CommandResult.ARGS
        Parameters:
        sender - the executor which need to get help information
        Returns:
        the help information
      • isInitialize

        public boolean isInitialize()