Interface CommandPlatform<S>

Type Parameters:
S - sender type

public interface CommandPlatform<S>
Platform hooks required by the command engine.
  • Method Details

    • senderType

      Class<?> senderType()
      Base sender type for this platform (e.g. CommandSender).
      Returns:
      sender class
    • playerType

      @Nullable default @Nullable Class<?> playerType()
      Player type for this platform (e.g. Player), if available.
      Returns:
      player class or null
    • getPlayerSender

      @Nullable default @Nullable Object getPlayerSender(S sender)
      Resolve a player instance for the given sender if one exists.
      Parameters:
      sender - sender
      Returns:
      player instance or null
    • getName

      String getName(S sender)
      Resolve the human-readable sender name for logging.
      Parameters:
      sender - sender
      Returns:
      name
    • hasPermission

      boolean hasPermission(S sender, String permission, MagicPermissionDefault defaultValue)
      Check permission for a sender with default value awareness.
      Parameters:
      sender - sender
      permission - permission node
      defaultValue - permission default
      Returns:
      true if granted
    • ensurePermissionRegistered

      void ensurePermissionRegistered(String node, MagicPermissionDefault defaultValue, String description)
      Register permission metadata if the platform supports it.
      Parameters:
      node - permission node
      defaultValue - default
      description - description
    • resolveSenderArgument

      Object resolveSenderArgument(S sender, CommandArgument argument) throws SenderMismatchException
      Resolve sender argument for @Sender parameters.
      Parameters:
      sender - sender
      argument - argument metadata
      Returns:
      resolved argument
      Throws:
      SenderMismatchException - if sender is not allowed
    • isSenderType

      default boolean isSenderType(Class<?> type)
      Checks if the provided type represents the base sender type.
      Parameters:
      type - type to check
      Returns:
      true if it should be auto-filled by sender
    • hasPermissionByPrefix

      default boolean hasPermissionByPrefix(S sender, String... prefixes)
      Check whether sender has any permission that starts with the given prefix.
      Parameters:
      sender - sender
      prefixes - prefixes to check
      Returns:
      true if any permission matches
    • describeSender

      default String describeSender(AllowedSender sender)
      Returns a human-readable description of the given sender kind.
      Parameters:
      sender - sender kind
      Returns:
      description
    • isAllowedSender

      default boolean isAllowedSender(AllowedSender[] allowed, AllowedSender calleeKind)
      Checks if the caller's sender kind is in the allowed list.
      Parameters:
      allowed - allowed sender kinds (null/empty means all)
      calleeKind - the caller's sender kind
      Returns:
      true if allowed
    • inferSenderFromType

      default AllowedSender inferSenderFromType(Class<?> type)
      Infers the expected sender kind from a parameter type.
      Parameters:
      type - parameter type
      Returns:
      inferred sender kind or AllowedSender.ANY
    • buildSenderError

      default String buildSenderError(Class<?> targetType, AllowedSender[] allowed)
      Builds a human-readable error message when the sender doesn't match.
      Parameters:
      targetType - the expected parameter type
      allowed - allowed sender kinds
      Returns:
      error message