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
actorhas 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
CommandPermissionbased on the provided list of annotations and theLampinstance. 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
GroupPermissionFactorychecks if the sender’s rank matches the required group specified in the@RequiresGroupannotation.If the sender is authorized, they can execute the command; otherwise, they will be denied access.
Last updated
Was this helpful?