Command permissions
Command permissions allow you to restrict access to commands based on user permissions
The CommandPermission
interface is used to define permissions required to execute a command. It is a functional interface that evaluates whether a command can be executed by a given CommandActor
. This implementation may vary depending on the target platform.
Interface Methods
boolean isExecutableBy(@NotNull A actor)
Determines whether the specified
actor
has permission to execute the command.
Factory Interface
The CommandPermission.Factory
interface allows you to create custom CommandPermission
implementations based on annotations.
@Nullable CommandPermission<A> create(@NotNull AnnotationList annotations, @NotNull Lamp<A> lamp)
Creates a new
CommandPermission
based on the provided list of annotations and theLamp
instance. If the factory does not handle the given input, it may returnnull
.
Platform-Specific Command Permissions
In addition to the generic CommandPermission
interface, various platforms have their own specialized @CommandPermission
annotations for handling permissions. This allows you to define and manage permissions specific to the platform you are working with.
Custom permission annotations
Example: Custom Command Permission in Bukkit
1. Create a Custom Annotation
First, define a custom annotation to specify the required group:
2. Implement a Custom CommandPermission.Factory
Next, create a CommandPermission.Factory
that checks if the CommandActor
has the required group:
3. Register the Factory with Lamp
Register your custom CommandPermission.Factory
with the Lamp
instance:
4. Use the Annotation in a Command
Finally, use the @RequiresGroup
annotation in your command method:
In this setup:
The
GroupPermissionFactory
checks if the sender’s rank matches the required group specified in the@RequiresGroup
annotation.If the sender is authorized, they can execute the command; otherwise, they will be denied access.
Last updated
Was this helpful?