Class CyberSuperCommand

All Implemented Interfaces:
org.bukkit.command.CommandExecutor, org.bukkit.command.TabCompleter

public abstract class CyberSuperCommand extends BaseCommand implements org.bukkit.command.CommandExecutor, org.bukkit.command.TabCompleter
Used to easily create a command that can be registered to the server. This command also has support for subcommands.
  • Constructor Details

    • CyberSuperCommand

      public CyberSuperCommand(String name, String permission, String permissionMsg, String usage)
      Creates a new CyberSuperCommand with the provided arguments.

      Note: this is where you should call the register(boolean) method.

      Parameters:
      name - The name of the command
      permission - The permission to use the command (null for no permission)
      permissionMsg - The message to send to the player if they do not have the permission
      usage - The usage of the command (Note: if any CyberSubCommand are added to this command, their usages will also be sent, unless you override the sendUsage(CommandSender) method)
    • CyberSuperCommand

      public CyberSuperCommand(String name, String permission, String usage)
      Creates a new CyberSuperCommand with the provided arguments. The permission message is set to the default permission message provided by CyberCommandUtils.getDefaultPermissionMsg().

      Note: this is where you should call the register(boolean) method.

      Parameters:
      name - The name of the command
      permission - The permission to use the command (null for no permission)
      usage - The usage of the command (Note: if any CyberSubCommand are added to this command, their usages will also be sent, unless you override the sendUsage(CommandSender) method)
    • CyberSuperCommand

      public CyberSuperCommand(String name, String usage)
      Creates a new CyberSuperCommand with the provided arguments. The permission message is set to the default permission message provided by CyberCommandUtils.getDefaultPermissionMsg(). The permission is assumed to be null, meaning that no permission is needed to execute this command.

      Note: this is where you should call the register(boolean) method.

      Parameters:
      name - The name of the command
      usage - The usage of the command (Note: if any CyberSubCommand are added to this command, their usages will also be sent, unless you override the sendUsage(CommandSender) method)
  • Method Details

    • onTabComplete

      public final List<String> onTabComplete(org.bukkit.command.CommandSender sender, org.bukkit.command.Command command, String label, String[] args)
      This should be ignored by most developers
      Specified by:
      onTabComplete in interface org.bukkit.command.TabCompleter
    • tabComplete

      public abstract List<String> tabComplete(SentCommand command)
      The tabComplete method is called when the player presses tab while typing a command.

      Returning an empty list will do the following:

      1. If this command has any subcommands (added by the addSubCommand(CyberSubCommand) method):
        1. If the current argument the player is typing is the first argument, the names of each CyberSubCommand added will be returned
        2. If the current argument the player is typing is not the first argument, a CyberSubCommand will attempted to be found with the name of the first argument, and return the list provided by the CyberSubCommand.tabComplete(SentCommand, SentSubCommand) method
      2. If the argument the command sender is currently typing has been set (via BaseCommand.setArgType(int, ArgType)) to either ArgType.ONLINE_PLAYER or ArgType.OFFLINE_PLAYER), then a list of players will be sent to the command sender.
      3. If the above yields no results, an empty list will be sent to the command sender.
      To override this behavior, return a list containing one string that is empty, and that will be returned instead.
      Parameters:
      command - The SentCommand of the command that is being typed
      Returns:
      A list of strings to return to the command sender
    • onCommand

      public final boolean onCommand(org.bukkit.command.CommandSender sender, org.bukkit.command.Command command, String label, String[] args)
      This should be ignored by most developers
      Specified by:
      onCommand in interface org.bukkit.command.CommandExecutor
    • execute

      public abstract boolean execute(SentCommand command)
      The execute method is called when the player executes a command. All information about the command, who executed it, the arguments, etc. are provided in the SentCommand parameter.

      If any subcommands are added to this command and the getExecuteSubCommands() method return true, then the corresponding subcommand (from the first argument) will be executed. If no subcommand can be found or the getExecuteSubCommands() method is false, then this method will be called.

      The value returned by this method will be returned to the CommandExecutor.onCommand(CommandSender, Command, String, String[]) method.

      Parameters:
      command - The SentCommand of the command that was executed
      Returns:
      What to return to the CommandExecutor.onCommand(CommandSender, Command, String, String[]) method
      See Also:
      • CommandExecutor.onCommand(CommandSender, Command, String, String[])
    • register

      public final void register(boolean includeTabComplete)
      Required to be executed for the command to work properly
      Parameters:
      includeTabComplete - if the command should be tab completable
    • sendUsage

      public void sendUsage(org.bukkit.command.CommandSender sender)
      Sends the usage message of this command along with any subcommands to the sender
      Overrides:
      sendUsage in class BaseCommand
      Parameters:
      sender - the sender of the command
    • addSubCommand

      public void addSubCommand(CyberSubCommand subcommand)
      Adds a CyberSubCommand to the command
      Parameters:
      subcommand - The CyberSubCommand to add
    • getSubCommandList

      public List<CyberSubCommand> getSubCommandList()
      Returns:
      All CyberSubCommands that are added to this command
    • getSubCommandNames

      public List<String> getSubCommandNames()
      Returns:
      The names of all the CyberSubCommands in this command
    • getSubCommand

      public CyberSubCommand getSubCommand(String name)
      Parameters:
      name - The name of the CyberSubCommand to get
      Returns:
      The CyberSubCommand with the provided name, or null if not found
    • getSubCommandsForSender

      public List<CyberSubCommand> getSubCommandsForSender(org.bukkit.command.CommandSender sender)
      Parameters:
      sender - The CommandSender
      Returns:
      A list of CyberSubCommand that the provided CommandSender has permission to use
    • setExecuteSubCommands

      public void setExecuteSubCommands(boolean executeSubcommands)
      Parameters:
      executeSubcommands - True if the command, when executed, should try to execute a subcommand before executing the command itself, otherwise false.
    • getExecuteSubCommands

      public boolean getExecuteSubCommands()
      Returns:
      True if the command, when executed, should try to execute a subcommand before executing the command itself, otherwise false.