Event Setup is a full server folder for running crystal PvP events. Players wait in a lobby with a live scoreboard. When an event starts, everyone is sent into a freshly generated arena with the kit you set, and a world border shrinks in stages until one player is left. The winner gets a broadcast and a win on their record.
Events start on a timer or by hand from an admin menu. Players who aren't fighting can spectate, and an optional coin system rewards kills with coins to spend on kill messages and sounds.
Permissions#
| Permission | Lets a player | Default |
|---|---|---|
event.admin | Use every /event command. | OP |
coins.admin | Manage coin balances with /coins. | OP |
/leave and /coinshop need no permission.
Commands#
| Command | What it does | Permission |
|---|---|---|
/event | Opens the admin menu: start or stop, timer, kit editor, border and spectate. | event.admin |
/event setlobby | Sets the lobby to where you stand. | event.admin |
/event spectate | Watches the running event in spectator mode. | event.admin |
/event reload | Reloads config.yml. A broken edit is refused and the old settings stay. | event.admin |
/leave | Leaves the event you're in. /event leave does the same for admins. | None |
/coinshop | Opens the coin shop. | None |
/coins <set|add|remove|see> <player> [amount] | Manages a player's coins. | coins.admin |
The coin commands only exist while coins-system.enabled is true.
Configuration#
The event plugin is zEvents. Its files are in plugins/zEvents/: config.yml for everything, and kit-inventory.yml for the kit, which you edit in game from /event.
| Key | Default | What it does |
|---|---|---|
required-players | 2 | Players needed to start. |
automatic-start-up.enabled | true | Start an event every time-in-minutes (default 60) when enough players are online. Starting one by hand resets the timer. |
event-waiting-time | 60 | Seconds after the teleport before PvP starts. |
world-generator | CUSTOM | CUSTOM or NORMAL arena generation. CUSTOM is lighter on the server. |
difficulty | HARD | Arena difficulty. |
glowing.players | 3 | The last this-many players glow. |
remove-dropped-items-on-win | true | Clear dropped items when the event ends. |
command-internal | golden apple every 5s | Console commands run on a timer during the event, with %player%. |
coins-system.enabled | true | Coins, /coinshop and /coins. |
proxy-alerts.bungeecord | false | Advertise the event on your BungeeCord network before it starts. |
event-lobby-location | Where players wait and return to. Set it with /event setlobby. |
Border#
world-border-scheduler:
initial-size: 500
shrinking-stages:
stage-1:
delay-before-start-seconds: 60
target-size: 400
duration-seconds: 30
stage-5:
delay-before-start-seconds: 300
target-size: 20
duration-seconds: 60Each stage waits delay-before-start-seconds from the start of the event, then shrinks the border to target-size over duration-seconds. The default has 5 stages from 500 blocks down to 20.
Scoreboards#
scoreboards.lobby and scoreboards.event each have a title and lines. Both must be there, and /event reload refuses a config where either is missing. Along with any PlaceholderAPI placeholder, these work:
| Placeholder | Shows |
|---|---|
%event_queue% | Players waiting in the lobby. |
%event_alive%, %event_dead% | Players still in, and out. |
%event_border_size%, %event_next_shrink_time% | Border size and time to the next shrink. |
%event_start_time% | Time until the next event. |
%event_wins%, %event_coins% | The player's wins and coins. |
The coin shop sells kill messages and kill sounds, set under coin-shop.
What's included#
- A Paper 26.1.2 server with its lobby world,
spawn. - zEvents, the event plugin, set up with the lobby, kit, border and scoreboards.
- LuckPerms, Vault, EssentialsX and EssentialsX Chat, PlaceholderAPI, TAB, WorldEdit, FastAsyncWorldEdit, WorldGuard, Multiverse-Core, VoidGen, Citizens, FancyHolograms, ajLeaderboards, AutomaticBroadcast, BlockParticles, FreedomChat, spark, ViaVersion and ViaBackwards.
Requirements#
- Java 25 or newer.
Install#
- Unzip the setup where you want the server to live.
- Start it with
java -jar server.jar, adding the memory flags your host uses. The server port is25551inserver.properties. - Join, stand in the lobby and run
/event setlobby. - Open
/event, check the kit in the kit editor and adjustrequired-playersand the border to your player count. - Start a test event from
/eventwith a friend.
On a network#
Add the server to your proxy under a name like event. With proxy-alerts.bungeecord: true, players on your other servers get the messages under proxy-alerts.messages before an event starts, such as "Type /server event to join".
First things to change#
- The scoreboard footer and
winner-message/welcome-messagetext inconfig.yml. - The kit, from the kit editor in
/event. automatic-start-up.time-in-minutes, to fit how often you want events.