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
- Templates — In
config.json, you define arena templates. Each template specifies a map (prefab file), game mode, player count, time limit, and available kits. - Queue — When enough players join the queue for a category, the matchmaker triggers a match.
- 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. - 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.
- 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.
- Resolution — When the match ends, results are processed (rating changes, win commands, etc.), and players are teleported back to their original position.
- Cleanup — The arena world is destroyed, freeing resources for the next match.
Arena Lifecycle
An arena instance goes through multiple phases:
| Phase | Description |
|---|---|
| Created | World instance is being set up from the prefab |
| Players Joining | Players are being teleported into the arena |
| Match Active | The fight is in progress — timer is running |
| Match Ended | A winner has been determined |
| Cleaning Up | Players are teleported out, world is queued for deletion |
| Destroyed | World is removed from memory |
Prefabs
Prefabs are pre-built arena maps. ArenaPvP supports two file extensions:
| Extension | Origin |
|---|---|
.prefab | Standard prefab format |
.prefab.json | Hytale 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.
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:
| File | Designed For |
|---|---|
arena_2FFA.prefab | 1v1 FFA |
arena_4T.prefab | 2v2 Team |
arena_4FFA.prefab | 4-player FFA |
arena_4-6FFADM.prefab | 4–6 player FFA Deathmatch |
arena_4-6TDM.prefab | 4–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.
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 Name | Mode |
|---|---|
Arena_FFA_Spawn1 ... Arena_FFA_Spawn16 | Free For All |
Arena_T_Spawn1 ... Arena_T_Spawn16 | Team |
Arena_FFADM_Spawn1 ... Arena_FFADM_Spawn16 | FFA Deathmatch |
Arena_TDM_Spawn1 ... Arena_TDM_Spawn16 | Team Deathmatch |
Arena_TCTO_Spawn1 ... Arena_TCTO_Spawn16 | Capture the Orb |
Arena_Spectator_Spawn | Spectator position (all modes) |
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 Block | Assigned To |
|---|---|
Arena_T_Spawn1 | Team 1 — Player A |
Arena_T_Spawn2 | Team 1 — Player B |
Arena_T_Spawn3 | Team 2 — Player C |
Arena_T_Spawn4 | Team 2 — Player D |
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 Name | Purpose |
|---|---|
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_Spawnblocks) spawn nearArena_Orb_Spawn1(Red)— this is their base with their orb. - Team 2's players (second half of
Arena_TCTO_Spawnblocks) spawn nearArena_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.
When building a TCTO map:
- Place
Arena_Orb_Spawn1(Red)at Team 1's base area. - Place
Arena_TCTO_Spawn1,Arena_TCTO_Spawn2(etc.) nearArena_Orb_Spawn1(Red)— these are Team 1's player spawns. - Place
Arena_Orb_Spawn2(Blue)at Team 2's base area (opposite side of the map). - Place
Arena_TCTO_Spawn3,Arena_TCTO_Spawn4(etc.) nearArena_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 Name | Purpose |
|---|---|
Arena_Heal_Spawn | Health 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.
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
AllowBreakBlocktemplate setting (default:false). - Block placing — Controlled by the
AllowBlockPlacetemplate 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.