Command conditions
This page explains how to use the CommandCondition interface to restrict command execution based on custom conditions
The CommandCondition
interface allows you to define conditions that must be met for a command invocation to proceed. This is useful for performing checks based on specific annotations or other criteria to control command execution flow.
Implementing a Custom CommandCondition
CommandCondition
In this example, we will create a custom condition that checks if the command actor is an operator (op). We will use a custom annotation @IsOpped
to mark commands that should only be executable by ops. If the condition is not met, the condition will throw an exception, preventing the command from executing.
Step 1: Define the @IsOpped
Annotation
@IsOpped
AnnotationThe @IsOpped
annotation will be used to mark commands that require the actor to be an operator:
Step 2: Implement the IsOppedCondition
IsOppedCondition
Next, we create a CommandCondition
implementation that checks if the actor is an operator by inspecting the @IsOpped
annotation:
Step 3: Register the Condition
To use the IsOppedCondition
, you need to register it with your Lamp
instance, specifying that it should be used whenever the @IsOpped
annotation is present:
Step 4: Applying the @IsOpped
Annotation to Commands
@IsOpped
Annotation to CommandsNow, you can apply the @IsOpped
annotation to any command method that should only be accessible by operators:
In this example, the opOnlyCommand
method is marked with the @IsOpped
annotation, indicating that it requires the actor to be an operator. If a non-operator attempts to use this command, the IsOppedCondition
will throw a CommandErrorException
, and the command framework will handle the exception appropriately.
Last updated
Was this helpful?