Interface CommandPlatform<S>
- Type Parameters:
S- sender type
public interface CommandPlatform<S>
Platform hooks required by the command engine.
-
Method Summary
Modifier and TypeMethodDescriptiondefault StringbuildSenderError(Class<?> targetType, AllowedSender[] allowed) Builds a human-readable error message when the sender doesn't match.default StringdescribeSender(AllowedSender sender) Returns a human-readable description of the given sender kind.voidensurePermissionRegistered(String node, MagicPermissionDefault defaultValue, String description) Register permission metadata if the platform supports it.Resolve the human-readable sender name for logging.default @Nullable ObjectgetPlayerSender(S sender) Resolve a player instance for the given sender if one exists.booleanhasPermission(S sender, String permission, MagicPermissionDefault defaultValue) Check permission for a sender with default value awareness.default booleanhasPermissionByPrefix(S sender, String... prefixes) Check whether sender has any permission that starts with the given prefix.default AllowedSenderinferSenderFromType(Class<?> type) Infers the expected sender kind from a parameter type.default booleanisAllowedSender(AllowedSender[] allowed, AllowedSender calleeKind) Checks if the caller's sender kind is in the allowed list.default booleanisSenderType(Class<?> type) Checks if the provided type represents the base sender type.default @Nullable Class<?> Player type for this platform (e.g.resolveSenderArgument(S sender, CommandArgument argument) Resolve sender argument for @Sender parameters.Class<?> Base sender type for this platform (e.g.
-
Method Details
-
senderType
Class<?> senderType()Base sender type for this platform (e.g. CommandSender).- Returns:
- sender class
-
playerType
Player type for this platform (e.g. Player), if available.- Returns:
- player class or null
-
getPlayerSender
-
getName
-
hasPermission
Check permission for a sender with default value awareness.- Parameters:
sender- senderpermission- permission nodedefaultValue- 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 nodedefaultValue- defaultdescription- description
-
resolveSenderArgument
Resolve sender argument for @Sender parameters.- Parameters:
sender- senderargument- argument metadata- Returns:
- resolved argument
- Throws:
SenderMismatchException- if sender is not allowed
-
isSenderType
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
-
describeSender
Returns a human-readable description of the given sender kind.- Parameters:
sender- sender kind- Returns:
- description
-
isAllowedSender
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
Infers the expected sender kind from a parameter type.- Parameters:
type- parameter type- Returns:
- inferred sender kind or
AllowedSender.ANY
-
buildSenderError
Builds a human-readable error message when the sender doesn't match.- Parameters:
targetType- the expected parameter typeallowed- allowed sender kinds- Returns:
- error message
-