Skip to main content

Arenas

Arenas are the core of ArenaPvP. Each match takes place in an isolated, temporary world created from a prefab (pre-built map).

How Arenas Work

  1. Templates — In config.json, you define arena templates. Each template specifies a map (prefab file), game mode, player count, time limit, and available kits.
  2. Queue — When enough players join the queue for a category, the matchmaker triggers a match.
  3. Template Selection — If there are multiple templates in the same category (same MaxPlayers + Type), the matchmaker randomly picks one. This provides automatic map rotation without any extra configuration.
  4. Instance Creation — A new world is created from the selected template's prefab file. This world is completely isolated — nothing that happens there affects the main world.
  5. Match — Players are teleported into the arena, receive their kit, and the battle begins. Arena protections are active: block breaking, item dropping, and other actions are controlled by the template settings.
  6. Resolution — When the match ends, results are processed (rating changes, win commands, etc.), and players are teleported back to their original position.
  7. Cleanup — The arena world is destroyed, freeing resources for the next match.

Arena Lifecycle

An arena instance goes through multiple phases:

PhaseDescription
CreatedWorld instance is being set up from the prefab
Players JoiningPlayers are being teleported into the arena
Match ActiveThe fight is in progress — timer is running
Match EndedA winner has been determined
Cleaning UpPlayers are teleported out, world is queued for deletion
DestroyedWorld is removed from memory

Prefabs

Prefabs are pre-built arena maps. ArenaPvP supports two file extensions:

ExtensionOrigin
.prefabStandard prefab format
.prefab.jsonHytale in-game save format (created when players save prefabs from the game)

Both formats are functionally identical — .prefab files are JSON internally. ArenaPvP handles them interchangeably: when loading a prefab, the plugin first looks for .prefab and then for .prefab.json automatically. You do not need to rename files.

tip

When referencing a prefab in a template, you can use just the base name (e.g. "arena_2FFA"), the .prefab extension (e.g. "arena_2FFA.prefab"), or the .prefab.json extension (e.g. "arena_2FFA.prefab.json"). The plugin resolves the correct file automatically.

ArenaPvP ships with several example prefabs:

FileDesigned For
arena_2FFA.prefab1v1 FFA
arena_4T.prefab2v2 Team
arena_4FFA.prefab4-player FFA
arena_4-6FFADM.prefab4–6 player FFA Deathmatch
arena_4-6TDM.prefab4–6 player Team Deathmatch

Prefab files are stored in the prefabs/ directory under the mod folder. You can add your own prefabs by placing .prefab or .prefab.json files there and referencing them in your arena templates.

File Resolution

Prefab file lookup is case-insensitive for compatibility with Linux servers. The plugin also checks a legacy directory (mods/arepapvp/prefabs/) as a fallback for backward compatibility.

Spawn Points

Each prefab must include spawn blocks that define where players will be placed when the match starts. The plugin automatically detects these blocks during prefab loading and assigns players to spawn positions.

Spawn blocks follow the naming pattern Arena_{TYPE}_Spawn{N}, where {TYPE} is the game mode code and {N} is the spawn number (starting from 1):

Block NameMode
Arena_FFA_Spawn1 ... Arena_FFA_Spawn16Free For All
Arena_T_Spawn1 ... Arena_T_Spawn16Team
Arena_FFADM_Spawn1 ... Arena_FFADM_Spawn16FFA Deathmatch
Arena_TDM_Spawn1 ... Arena_TDM_Spawn16Team Deathmatch
Arena_TCTO_Spawn1 ... Arena_TCTO_Spawn16Capture the Orb
Arena_Spectator_SpawnSpectator position (all modes)
tip

You only need to place as many spawn blocks as your maximum player count for that template. For a 4-player arena, you need at least 4 spawn blocks.

FFA / FFADM Spawns

For free-for-all modes, spawn assignment is sequential — Player 1 gets Spawn1, Player 2 gets Spawn2, and so on. In FFADM, players who die respawn at a random spawn point (avoiding the one they last spawned at).

Team Spawns (T / TDM / TCTO)

For team-based modes, spawns are split in half between the two teams:

  • Team 1 receives the first half of the numbered spawns.
  • Team 2 receives the second half of the numbered spawns.

For example, in a 4-player team arena (4-T) with 4 spawn blocks:

Spawn BlockAssigned To
Arena_T_Spawn1Team 1 — Player A
Arena_T_Spawn2Team 1 — Player B
Arena_T_Spawn3Team 2 — Player C
Arena_T_Spawn4Team 2 — Player D
Important

Place Team 1's spawn blocks on one side of the map and Team 2's on the other side. The plugin assigns spawns in order, so Spawn1 through SpawnN/2 will always go to Team 1, and the rest to Team 2.

TCTO Orb Spawns

In addition to player spawns, TCTO (Capture the Orb) maps require two orb spawn blocks that define where each team's orb appears:

Block NamePurpose
Arena_Orb_Spawn1(Red)Orb spawn position for Team 1's base
Arena_Orb_Spawn2(Blue)Orb spawn position for Team 2's base

The orb spawn assignment follows the same team-spawn split logic:

  • Team 1's players (first half of Arena_TCTO_Spawn blocks) spawn near Arena_Orb_Spawn1(Red) — this is their base with their orb.
  • Team 2's players (second half of Arena_TCTO_Spawn blocks) spawn near Arena_Orb_Spawn2(Blue) — this is their base with their orb.

Each team must run to the enemy's orb spawn to pick up the orb, then carry it back to their own base to score a capture.

TCTO Map Design

When building a TCTO map:

  1. Place Arena_Orb_Spawn1(Red) at Team 1's base area.
  2. Place Arena_TCTO_Spawn1, Arena_TCTO_Spawn2 (etc.) near Arena_Orb_Spawn1(Red) — these are Team 1's player spawns.
  3. Place Arena_Orb_Spawn2(Blue) at Team 2's base area (opposite side of the map).
  4. Place Arena_TCTO_Spawn3, Arena_TCTO_Spawn4 (etc.) near Arena_Orb_Spawn2(Blue) — these are Team 2's player spawns.

Heal Spawns

You can place heal spawn blocks in any prefab to create health recovery points. When a player walks over an active heal spawn, their health is fully restored and the heal spawn enters a cooldown period.

Block NamePurpose
Arena_Heal_SpawnHealth recovery point (all modes)
  • A heal spawn shows an active particle when available and a cooldown particle when on cooldown.
  • Players with full health will not trigger the heal spawn.
  • The cooldown duration is configurable per template via HealCooldownSeconds (default: 60 seconds).
  • Heal spawns are optional — maps work fine without them.
  • You can place multiple heal spawns in a single map.
tip

Place heal spawns in strategic locations (map center, contested areas) to encourage movement and add tactical depth to your maps.

Arena Protections

While inside an arena, several protections are active to ensure fair gameplay:

  • Block breaking — Controlled by the AllowBreakBlock template setting (default: false).
  • Block placing — Controlled by the AllowBlockPlace template setting (default: true).
  • Item dropping — Controlled by AllowDropItems (default: false).
  • Destructible World — Controlled by DestructibleWorld (default: false). Prevents the destruction of blocks loaded from prefab.
  • Friendly fire — Automatically disabled in team-based modes.
  • Spectator protections — Spectators cannot interact with the arena world (no breaking, placing, or damaging).

Instance Limits

You can control how many arenas can run simultaneously with the InstancesLimit setting in config.json:

{
"InstancesLimit": 0
}
  • 0 = Unlimited (as many arenas as the server can handle).
  • Any positive number = Maximum concurrent arena instances.

This is useful for controlling server resource usage.

World Naming

Arena worlds are automatically named with the ArenaWorldPrefix setting followed by a unique identifier:

{
"ArenaWorldPrefix": "arena_"
}

Worlds are temporary and cleaned up after each match — they don't persist between server restarts.