Interface CommandSourceStack


@NonExtendable @Experimental public interface CommandSourceStack
The command source type for Brigadier commands registered using Paper API.

While the general use case for CommandSourceStack is similar to that of CommandSender, it provides access to important additional context for the command execution. Specifically, commands such as /execute may alter the location or executor of the source stack before passing it to another command.

The CommandSender returned by getSender() may be a "no-op" instance of CommandSender in cases where the server either doesn't exist yet, or no specific sender is available. Methods on such a CommandSender will either have no effect or throw an UnsupportedOperationException.

  • Method Details

    • getLocation

      @NotNull @NotNull Location getLocation()
      Gets the location that this command is being executed at.
      Returns:
      a cloned location instance.
    • getSender

      Gets the command sender that executed this command. The sender of a command source stack is the one that initiated/triggered the execution of a command. It differs to getExecutor() as the executor can be changed by a command, e.g. /execute.
      Returns:
      the command sender instance
    • getExecutor

      @Nullable @Nullable Entity getExecutor()
      Gets the entity that executes this command. May not always be getSender() as the executor of a command can be changed to a different entity than the one that triggered the command.
      Returns:
      entity that executes this command