Cooldown On Event

Script Description

When we rightclick a block holding a stick, it will turn to bedrock. But we must wait 30 seconds before doing this again. If we don't, then it will send a message saying how long is left until we can do it again.

Part 1: Creating The Event

Let's create our event. Since it's a right click, we're going to be using the Right Click Event.

bedrock_stick.sk
on right click:

Part 2: Creating The Cooldown

Creating a cooldown is very easy in Skript. Here is the idea behind it.

Basically, we'll set a variable to the time right now when the player right clicks. The next time the player right clicks, we can check how long they waited by checking the difference of the variable and the time right now. If they have waited long enough, we can execute the code, and reset the variable from earlier.

So, let's do this. I'm going to get the global list variable named cooldown and the brstick::%player's uuid% index of it. We're going to set a local variable named waited to the difference between the list variable and now. To do this we can use the now expression.

bedrock_stick.sk
on right click:
    set {_waited} to difference between {cooldown::brstick::%player's uuid%} and now

Part 3: How Long Is The Wait?

For this tutorial, I'm going to make it so the player will have to wait 30 seconds. To do this, in the next line, I'm going to add an if statement to check if our wait variable is less than 30 seconds. If it is, we'll send to the player how long they'll have to wait before right clicking again. Finally, we'll use the stop effect to stop the rest of the code from executing since the cooldown is not over yet.

bedrock_stick.sk
on right click:
    set {_waited} to difference between {cooldown::brstick::%player's uuid%} and now
    if {_waited} is less than 30 seconds:
        send "Please wait %difference between 30 seconds and {_waited}% before doing this again."
        stop

Part 4: Executing The Code

Now we can be sure that the player has waited 30 seconds when executing the next line of code. We're going to get the clicked block and set it to to bedrock. Then finally, we're going to reset the cooldown variable used in the second line.

bedrock_stick.sk
on right click:
    set {_waited} to difference between {cooldown::brstick::%player's uuid%} and now
    if {_waited} is less than 30 seconds:
        send "Please wait %difference between 30 seconds and {_waited}% before doing this again."
        stop
    set event-block to bedrock
    set {cooldown::brstick::%player's uuid%} to now

Last updated