> For the complete documentation index, see [llms.txt](https://zone-developement.gitbook.io/zonepractice-pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://zone-developement.gitbook.io/zonepractice-pro/setup-guides/event-setup.md).

# Event Setup

Detailed event setup and hosting workflow.

ZonePractice supports 7 event modes:

| Event      | Command                           | Type       | Description                                                                   |
| ---------- | --------------------------------- | ---------- | ----------------------------------------------------------------------------- |
| LMS        | `/event lms`                      | FFA        | Last Man Standing — last player alive wins                                    |
| OITC       | `/event oitc`                     | FFA        | One In The Chamber — lives from `EVENT.OITC.SETTINGS.PLAYER-LIFE` (default 5) |
| TNT Tag    | `/event tnttag`                   | One-vs-All | Tagged player explodes                                                        |
| Brackets   | `/event brackets`                 | 1v1        | Tournament-style bracket elimination                                          |
| Sumo       | `/event sumo`                     | 1v1        | 1v1 knockback fights, touching water or lava loses                            |
| Splegg     | `/event splegg`                   | FFA        | Shoot eggs to break blocks under players                                      |
| Juggernaut | `/event juggernaut` (alias: `jn`) | One-vs-All | One player is the juggernaut                                                  |

## Step 1: Open event setup

Run `/setup event` (`zpp.setup`), then click an event.

In the event main GUI:

* Slot 10: left-click with an item on your cursor to set the icon. The item needs a display name. Right-click teleports you to the event.
* Slot 11: enable/disable.
* Slot 15: settings.
* Slot 16: gives you the Event Wand.

Nothing can be edited while the event is enabled.

<figure><img src="https://1736465804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNg4aQZmIEDI8bNN6M2v6%2Fuploads%2Fgit-blob-9ac143100ff17c072532e52743325b4ebae17aac%2Fezgif.com-optimize.gif?alt=media" alt="Setting event icon"><figcaption><p>Set event icon</p></figcaption></figure>

## Step 2: Map and spawns (Event Wand)

Build or paste the map in any world except the lobby world and arena copy worlds. The empty `arenas` world is made for this.

Use a world dedicated to arenas. A world that holds an event map cannot hold the lobby, and it cannot be unloaded while the server runs.

Get the Event Wand from slot 16 of the event main GUI. The wand (a blaze rod) switches you to creative/fly mode.

<figure><img src="https://1736465804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNg4aQZmIEDI8bNN6M2v6%2Fuploads%2Fgit-blob-d4adede45e85b78268567698368859b6489e3c37%2Fezgif.com-reverse-9.gif?alt=media" alt="Getting event marker item"><figcaption><p>Get map marker item</p></figcaption></figure>

Wand controls:

* Shift + Left-click: next mode.
* Shift + Right-click: previous mode.
* Q: exit the wand.

Modes:

* **Corners**: left-click a block = corner 1, right-click = corner 2. Both must be in the same world, and that world can't be the lobby world or an arena copy world. Select the 2 corners so the full map is enclosed.

<div align="left"><figure><img src="https://1736465804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNg4aQZmIEDI8bNN6M2v6%2Fuploads%2Fgit-blob-d622edd4406ba9c3840c2ef5e24e148ef10221f9%2F68747470733a2f2f776f726c64656469742e656e67696e656875622e6f72672f656e2f6c61746573742f5f696d616765732f6375626f69642e706e67.webp?alt=media" alt="Event map corner selection"><figcaption><p>Corner selection</p></figcaption></figure></div>

* **Spawn Points**:
  * Right-click a block to add a spawn. The spawn is placed on top of the block, facing snapped to 45°.
  * Right-click a spawn marker to remove that marker.
  * Left-click removes the last spawn.
  * Spawns must be inside the corners. Moving the corners removes spawns outside the new area.

<div align="left"><figure><img src="https://1736465804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNg4aQZmIEDI8bNN6M2v6%2Fuploads%2Fgit-blob-fba6e80ff5aa93fe9e2b0f54d432e89a22512d2e%2FK%C3%A9perny%C5%91fot%C3%B3%202023-03-26%20-%2017.20.53.png?alt=media" alt="Event spawn marker example"><figcaption><p>Spawn marker example</p></figcaption></figure></div>

* **Toggle Status**: right-click enables the event.

## Step 3: Kits and requirements

Every event needs:

* Corners
* At least 1 spawn
* An icon

Sumo and Brackets need exactly 2 spawns.

Kits:

* `/event lms setkit`
* `/event brackets setkit`
* `/event sumo setkit`
* `/event juggernaut setkit juggernaut` and `/event juggernaut setkit players` (`jn` works as an alias for `juggernaut`)

`setkit` saves your current inventory, armor, off hand and active potion effects.

OITC (stone sword, bow, 1 arrow), TNT Tag and Splegg have fixed kits and no `setkit` command. Splegg needs a valid `EVENT.SPLEGG.EGG-LAUNCHER-ITEM` in config.yml.

Each event also has `/event <type> enable` and `/event <type> disable`. All of them need `zpp.setup`, and the event must be disabled and not running.

## Step 4: Settings GUI

Open the settings from slot 15 of the event main GUI. Left-click decreases a value. Right-click increases it. The event must be disabled.

<figure><img src="https://1736465804-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNg4aQZmIEDI8bNN6M2v6%2Fuploads%2Fgit-blob-ff3c67161a60660c30954fc3139b5da768c97b89%2Fezgif.com-reverse-8.gif?alt=media" alt="Event settings GUI"><figcaption><p>Event settings GUI</p></figcaption></figure>

| Setting                                                   | Range                    |
| --------------------------------------------------------- | ------------------------ |
| Broadcast interval                                        | 5–30 s                   |
| Wait before start (countdown once min players is reached) | 5–60 s                   |
| Max queue time (event cancels if it has not started)      | 150–900 s, in 60 s steps |
| Slot 13: TNT Tag explode timer                            | 10–60 s                  |
| Slot 13: Sumo & Brackets round duration                   | 2–15 min                 |
| Slot 13: other events, max event duration                 | 10–75 min                |
| Start time (grace before PvP)                             | 0–10 s                   |
| Min players                                               | 2 – max players          |
| Max players                                               | min players – 100        |

## Step 5: config.yml

Each event has its own block under `EVENT.<TYPE>` (for example `EVENT.LMS`, `EVENT.SUMO`).

* `NAME`: the event name. It is also the data file name `events/<name>.yml`. If you rename it, the event looks unset.
* `WINNER-COMMAND`: commands run for the winner. `%player%` is replaced with the player name.
* `AUTO-EVENTS`: scheduled start times. See [Automatic events](#automatic-events).

Per-event settings:

* `EVENT.OITC.SETTINGS.PLAYER-LIFE`: lives per player (default 5).
* `EVENT.TNTTAG.TAGGED-ITEM`: the item given to the tagged player.
* `EVENT.SPLEGG.EGG-LAUNCHER-ITEM`: the item used to shoot eggs.
* `EVENT.SPLEGG.BREAKABLE-MATERIALS`: the blocks Splegg can break. Generic names like `WOOL` match all colours.
* `EVENT.PLAYER-TRACKER`: the compass item that shows the nearest player.

## Hosting and joining

* `/event host` opens the host GUI. It needs `zpp.event.host` plus `zpp.event.host.<type>` or `zpp.event.host.all`.
  * Types: `lms`, `oitc`, `tnttag`, `brackets`, `sumo`, `splegg`, `juggernaut`.
* Daily limit per group: `GROUPS.<group>.EVENT-START-PER-DAY` in groups.yml. The DEFAULT group is `0`, so normal players cannot host until you raise it.
* Hosting Brackets opens a kit picker: the default event kit or the host's own custom kits.
* `/event join` (short form: `/e join`): only works in the lobby, and not while in a party. It joins the event that is collecting players.
* `/event stop [event]`:
  * `zpp.event.stop.collecting` stops an event that is still collecting players.
  * `zpp.event.stop.live` stops a running event.
  * Without an argument, it only works when exactly one event exists.
* `EVENT.MULTIPLE: false` = one event at a time. `true` = several events can run, but only one can collect players at a time.

## Automatic events

Set the schedule per event in config.yml, under `EVENT.<TYPE>.AUTO-EVENTS`:

```yaml
EVENT:
  LMS:
    AUTO-EVENTS:
      - "18:30"
  JUGGERNAUT:
    AUTO-EVENTS:
      - "19:00"
```

* Times use the `H:mm` format in server time. Keep them quoted.
* Auto events skip the host permission and the daily limit. The event must still be enabled.

Set `EVENT.AUTO-EVENTS: true` to enable the auto-event system globally.

## Configuration highlights

```yaml
EVENT:
  MULTIPLE: false              # If true, several events can run, but only one can collect players
  DUEL:
    POST-KILL-DELAY: 3         # Seconds to wait after a duel-event elimination
  ENDERPEARL-COOLDOWN: 10      # Ender pearl cooldown in events (sec)
  BROADCAST:
    ENABLE: true
    MESSAGE-TO:
      IN-PARTY: true
      IN-UNRANKED-MATCH: true
      IN-RANKED-MATCH: false
      IN-EVENT: true
```

## Gameplay notes

* Duel events (Sumo, Brackets): leaving the area during a fight counts as a death.
* Juggernaut is picked at random. If the players win, `WINNER-COMMAND` runs for every surviving player.

## Beginner troubleshooting

If players cannot host:

* Check `zpp.event.host` or `zpp.event.host.all`
* Check the type permission, like `zpp.event.host.lms`
* Check `GROUPS.<group>.EVENT-START-PER-DAY` in groups.yml

If an event cannot be enabled:

* Check the corners
* Check the spawns (exactly 2 for Sumo and Brackets)
* Check the icon
* Check the kit (`/event <type> setkit`, if the event uses one)
