Skip to content

Command arguments

Berke Akçen edited this page Mar 30, 2024 · 12 revisions

Table of contents

Command argument basics

CommandArguments is an utility class for Command Framework and includes the basic parameters related Bukkit commands and bunch of useful methods to improve your code.

Basic Methods

    // We have created a basic command named "example"
    @Command(
            name = "example"
    )
    public void exampleCommandMethod(CommandArguments arguments) {
        // To get command sender use CommandArguments#getSender method
        CommandSender sender = arguments.getSender();

        // To check who is the sender
        if (arguments.isSenderPlayer()) {
            // now sender is player
        } else {
            // and now sender is console
        }

        // To get as Bukkit's command use CommandArguments#getCommand method
        // After that you can be able to get command's name, description, permission, etc.
        org.bukkit.command.Command command = arguments.getCommand();

        // To get label of command use CommandArguments#getLabel method
        String label = arguments.getLabel();

        // To get arguments of command use CommandArguments#getArguments() method
        // and don't forget these arguments is not all the parts of default arguments
        // because they'll be splitted after sub-command parts
        String[] args = arguments.getArguments();
       
       // To get specific argument without receiving argument array
       // There is no exception during this operation but also don't forget
       // that method can be null if index is out of bounds.
       String firstArgument = arguments.getArgument(0);

       // To get arguments array is empty or not without receiving array.
       boolean isArgsEmpty = arguments.isArgumentsEmpty();

       // To send message to command sender without receivingits object
       arguments.sendMessage("Hey there!");
 
       // To check if command sender has permission without receiving sender object
       if (arguments.hasPermission("command.framework") {
           // sender has the given permission
       } else {
           // sender has not the given permission
       }

       // To get arguments length without receiving string array
       int argumentsLength = arguments.getLength();
    }

Useful Methods

    // We have created a basic command named "example"
    @Command(
            name = "example"
    )
    public void exampleCommandMethod(CommandArguments arguments) {
       // Gets player from the given name, in Optional type
       Optional<Player> playerFromName = arguments.getPlayer("Despical");
       playerFromName.ifPresent(player -> player.sendMessage("Hello World!"));

       // Gets player from the given argument index, in this case first argument
       Optional<Player> playerFromArgs = arguments.getPlayer(0);
       playerFromArgs .ifPresent(player -> player.sendMessage("Hello World!"));

      // Assume that our arguments array is = ["example", "array", "with", "multiple", "arguments"]
      
      String concatenatedArgs = arguments.concatenateArguments();
      // concatenatedArgs will be equals to = "example array with multiple arguments"

      // from index is inclusive, to index is exclusive
      String concatenatedArgs = arguments.concatenateRangeOf(1, 4);
      // concatenatedArgs will be equals to = "array with multiple arguments"

      // Checks if the first argument is numeric or not.
      // Does not checks for bounds so should be careful about the overflowing.
      // This method will return false for non-positive or floating decimals.
      boolean isNumeric = arguments.isNumeric(0); // Method takes string values as well other than argument indexes.

      // This method checks if the first argument is an integer or not,
      // checks for bounds so it can throw exception if the integer limit is exceed in both positive or negative ways.
      // And will return false if the given argument is a floating point.
      boolean isInteger = arguments.isInteger(0); // Method takes string values as well other than argument indexes.

      // This method checks if the first argument is a floating decimal or not,
      // checks for bounds so it can throw exception if the double limit is exceed in both positive or negative ways.
      // And will return true if the given argument is an integer.
      boolean isFloatingDecimal = arguments.isFloatingDecimal(0); // Method takes string values as well other than argument indexes.
}
Clone this wiki locally