Skip to content

Hey there! If you like my work, you can support me by sponsoring me on GitHub. Thanks! ❤

Sponsor me
on GitHub

@Cooldown ​

The @Cooldown annotation in LiteCommands allows developers to set cooldown periods for commands, preventing users from executing the same command repeatedly within a specified timeframe. This feature is essential for managing command spam.

How to Use It ​

To implement a cooldown for a command, apply the @Cooldown annotation to your command method. You can also set cooldowns for subcommands by annotating the respective methods. The @Cooldown annotation accepts the following parameters:

  • key A unique identifier for the cooldown.
  • count The duration of the cooldown.
  • unit The time unit for the cooldown duration (e.g., ChronoUnit.SECONDS, ChronoUnit.MINUTES).
  • bypass An optional permission string that allows certain users to bypass the cooldown.

Here's an example of how to set up a command with a cooldown:

java
@Command(name = "example")
@Cooldown(key = "example-cooldown", count = 60L, unit = ChronoUnit.SECONDS, bypass = "bypass.permission")
public class ExampleCommand {

    @Execute(name = "subexample")
    @Cooldown(key = "subexample-cooldown", count = 30L, unit = ChronoUnit.SECONDS, bypass = "bypass.permission")
    void subcommand() {
        // Subcommand logic here
    }

    @Execute
    void mainCommand() {
        // Main command logic here
    }
}

In this example, the mainCommand method has a 60-second cooldown, while the subcommand method has a 30-second cooldown. Users with the bypass.permission permission can execute these commands without waiting for the cooldown period to expire.

Customizing the Default Cooldown Message ​

LiteCommands provides the flexibility to customize the message displayed to users when they attempt to execute a command that is still on cooldown. To change the default cooldown message, configure the LiteMessages.COMMAND_COOLDOWN message in your LiteCommands builder setup.

Here's how you can customize the cooldown message:

java
liteCommands = LiteBukkitFactory.builder(this)
    .commands(new ExampleCommand())
    .message(LiteMessages.COMMAND_COOLDOWN, (invocation, cooldownState) -> {
        Duration remainingDuration = cooldownState.getRemainingDuration();
        String formattedTime = DurationParser.DATE_TIME_UNITS.format(remainingDuration);
        return "Please wait " + formattedTime + " before using this command again.";
    })
    .build();

In this configuration, when a user attempts to execute a command that is still on cooldown, they will receive a message indicating how much time remains before they can use the command again. The DurationParser.DATE_TIME_UNITS.format(remainingDuration) method formats the remaining duration into a human-readable string.

Made by LiteDevelopers and Contributors with ❤️