> For the complete documentation index, see [llms.txt](https://realisticnode.gitbook.io/rnsetups/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://realisticnode.gitbook.io/rnsetups/rnkoth/guides/schedules.md).

# Schedules

Every way to write when a KOTH starts, time zones, warnings, countdowns and minimum players.

A KOTH starts by itself at the times of its `schedule` list. One line per time. A KOTH with an empty list only starts with `/koth start`.

```yaml
schedule:
  - 'daily 20:00'
  - 'weekends 16:00'
  - 'every 6h'
```

The easiest way to edit it is `/koth editor <name>` → **Schedule**. See [In-game editor](/rnsetups/rnkoth/configuration/editor.md#schedule).

<figure><img src="https://348500357-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FSlVHklG0EMAOmvfqcizu%2Fuploads%2F0eFYrO63uyHLq3baifiG%2Frnkoth-en-editor-schedule.png?alt=media" alt="The Schedule page: each ready-made time tells when its first start would be"><figcaption><p>The Schedule page: each ready-made time tells when its first start would be</p></figcaption></figure>

## Formats

| Line                | When it starts                                              |
| ------------------- | ----------------------------------------------------------- |
| `daily 20:00`       | Every day at 20:00. `20:00` alone works too.                |
| `mon,wed,fri 18:30` | On those days at 18:30.                                     |
| `weekdays 19:00`    | Monday to Friday at 19:00.                                  |
| `weekends 16:00`    | Saturday and Sunday at 16:00.                               |
| `every 2h`          | Every 2 hours: 00:00, 02:00, 04:00...                       |
| `every 45m`         | Every 45 minutes, counted from midnight.                    |
| `every 1h30m`       | Every hour and a half, counted from midnight.               |
| `every 90`          | A number alone is minutes: every 90 minutes.                |
| `every 2d`          | Every 2 days at 00:00 (every other day).                    |
| `2026-12-24 21:00`  | Only that day, at that time. Dates in the past are ignored. |

Details:

* **Times** use 24 hours: `20:00`, `08:30` or `8:30`.
* **Days**: the first three letters count, so `mon`, `monday` and `Monday` are the same. Separate days with commas and no spaces: `tue,thu`.
* `daily`, `everyday` and `all` mean every day. `weekend` works like `weekends`.
* **`every`** of a day or less counts from midnight and starts again every midnight. With `every 2h` the starts are always at even hours, wherever you restart the server. If the day is not a multiple of the interval (`every 7h`: 00:00, 07:00, 14:00, 21:00), the count starts again at 00:00.
* **`every`** longer than a day (`every 2d`, `every 36h`, `every 1d12h`) counts from a fixed day, 1 January 1970 at 00:00 in the `timezone` of `config.yml`, so it keeps its rhythm across days and restarts: `every 2d` is every other day at 00:00, `every 36h` is 00:00 one day and 12:00 the next. Days are counted in local time, so a change of summer time does not move the starts.

### Spanish words

You can write the lines in Spanish too:

| Spanish                                        | Same as             |
| ---------------------------------------------- | ------------------- |
| `diario 20:00`, `todos los días 20:00`         | `daily 20:00`       |
| `cada 2h`                                      | `every 2h`          |
| `entre semana 19:00`                           | `weekdays 19:00`    |
| `fines de semana 16:00`, `fin de semana 16:00` | `weekends 16:00`    |
| `lun,mié,vie 18:30`                            | `mon,wed,fri 18:30` |

Days in Spanish: `lun`, `mar`, `mie` / `mié`, `jue`, `vie`, `sab` / `sáb`, `dom`.

Menus show every line in the language of the player who reads it, whatever language it was written in.

## Time zone

All schedules use the `timezone` of `config.yml`:

```yaml
timezone: 'Europe/Madrid'
```

Empty (`''`) means the time zone of the server machine, which is often UTC on hosting. Use the names of the [tz database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), for example `America/Mexico_City`, `America/Bogota`, `America/Argentina/Buenos_Aires`, `America/New_York` or `UTC`. A name that does not exist uses the server time zone.

You can change it in `/koth editor <name>` → Schedule → **Time zone** (left / right click to go through common zones, Shift + click or Q to type one), or in the General page.

## Warnings before the start

```yaml
announce-before: [300, 60, 10]
```

Seconds before a **scheduled** start when players are warned in the chat (`{koth_name} starts in 5m. Get ready!`). `[]` = no warnings.

In the editor (Schedule → **Warnings before the start**) you type them like `15m,5m,1m,10s`, or `none`.

Warnings that are not longer than `start-countdown` are not sent, because the countdown already covers those seconds.

## Countdown

```yaml
start-countdown: 10
```

Seconds of countdown before the KOTH opens, for scheduled starts **and** for `/koth start` (`0` = it opens at once). The chat shows `{koth_name} opens in 10s!` with the location (for a KOTH with several areas, the area where it will open), and the `countdown` sound plays. The countdown is announced at the start, at 10 seconds, every 30 seconds and in the last 5 seconds.

`/koth start <name> <seconds>` uses another countdown for that start only.

## Minimum players

```yaml
min-players: 2
```

Players that must be **online on the server** for a scheduled start (`0` = it always starts). Vanished players (Essentials, SuperVanish, PremiumVanish and other plugins that mark players as `vanished`) and players in spectator mode are not counted. A KOTH file without this line uses `2`. When there are fewer, the chat says `{koth_name} did not start: it needs 2 players online (1).` and the KOTH waits for its next time.

`/koth start` always starts, whatever the number of players.

## When a start is skipped

A scheduled start does not happen when:

* the KOTH is `enabled: false` (it can still be started with `/koth start`),
* it has no area yet,
* it is already running or counting down,
* fewer players than `min-players` are online,
* `events.max-at-once` KOTHs are already running (`0` = no limit),
* the world of one of its areas is not loaded,
* another plugin cancels the start (see [Developer API](/rnsetups/rnkoth/reference/api.md)).

When the start fails for a reason other than the player count, the console shows it, for example `Hill spawn could not start by its schedule: ...`. When another plugin cancels a start at the end of its countdown, the console shows `The start of KOTH spawn was cancelled by another plugin (KothStartEvent).`

{% hint style="info" %}
If the server is off at a scheduled time, that start is not done later. The KOTH waits for its next time.
{% endhint %}

## Seeing the next start

* `/koth next`: the KOTH that starts the soonest, in how long and at what time.
* `/koth list` and `/koth info <name>`: the next start of each KOTH.
* The hologram of a waiting KOTH: `Next event: 2h 5m`.
* The editor: the **Next starts** item lists the next five starts.
* Placeholders: `%rnkoth_next_name%`, `%rnkoth_next_time%`, `%rnkoth_<name>_next%`. See [Placeholders](/rnsetups/rnkoth/reference/placeholders.md).
