Timers
Timers use a scoreboard objective that increments every tick. When the score reaches the configured duration, completion handlers fire.
This is a strong fit for round timers, capture phases, delayed rewards, warmups, or any mechanic that should complete after a predictable amount of ticks. Durations are expressed as TimeNumber values - 5.seconds, 200.ticks, etc.
- Objectives: one per timer, named after it.
- Storage: none.
- Entities: none.
- Forceloaded chunks: none.
- Every tick:
timer_<name>_tickadds 1 to every entity at 0 or more, andregisterTimerWithBossBaraddstimer_<name>_bar_tick, which copies the timer into the boss bar. - Load and files:
timer_<name>_initcreates the objective,onCompleteblocks become functions listed in#kore:timer_complete_handlers, andregisterTimerWithBossBaradds the boss bar<pack>:<name>_bar.
Registering a timer
This generates:
- A load function that creates the scoreboard objective.
- A tick function that increments the score of every entity with a score ≥ 0, players or not.
Typical lifecycle
Using dedicated start and stop points keeps it clear which gameplay events begin or cancel the countdown.
Using a timer
| Function | Description |
|---|---|
start |
Set the score to 0, beginning the countdown |
stop |
Set the score to −1, halting the timer |
onComplete |
Register a handler that fires when duration is reached |
Timer with Boss Bar
Combines a timer with an auto-managed boss bar:
The boss-bar variant is useful when you want a countdown that is both mechanical and visible to players without having to manually synchronize a separate UI layer. Its max is the duration in ticks, and every tick copies the timer score into the bar:
One bar shows one timer: when several entities run the same timer at once, the bar follows one of them. Register a timer per entity, or per team, to show each its own bar.
