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 the Lamp instance. If the factory does not handle the given input, it may return null.

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?