Arena Templates
Arena templates define the maps, rules, and settings for each type of match. Each template is stored as an individual JSON file inside the mods/arenapvp/templates/ directory.
The filename (without .json) is the template name — there is no Name key inside the file.
File Location
mods/arenapvp/templates/
1vs1-STANDARD.json
2v2-STANDARD.json
FFA-STANDARD.json
FFADM-STANDARD.json
TDM-STANDARD.json
TCTO-STANDARD.json
Template Properties
| Key | Type | Default | Description |
|---|---|---|---|
Prefab | string | — | Prefab filename in the prefabs/ folder. Supports .prefab and .prefab.json extensions, or just the base name (e.g. "arena_2FFA.prefab", "arena_2FFA.prefab.json", or "arena_2FFA") |
MaxPlayers | integer | 2 | Maximum number of players in the match |
Type | string | "FFA" | Game mode type code (see below) |
TimeLimit | integer | 180 | Match time limit in seconds |
Goal | integer | 0 | Kill/capture goal for deathmatch/TCTO modes (0 = not applicable) |
Presets | string[] | [] | Names of inventory presets available in this arena |
AllowDropItems | boolean | false | Allow players to drop items |
AllowBlockPlace | boolean | true | Allow players to place blocks |
AllowBreakBlock | boolean | false | Allow players to break blocks |
DestructibleWorld | boolean | false | Allow prefab blocks to be destroyed |
CarrierSpeedFactor | float | 0.7 | (TCTO only) Speed multiplier for the orb carrier (0.7 = 70% speed). Only written for TCTO templates. |
HealCooldownSeconds | integer | 60 | Cooldown in seconds before a heal spawn can be used again after being picked up |
WorldConfig | string | — | (Optional) ID of a world config file (filename without .json from worldsConfig/). Controls the arena sky tint and environment. |
CommandsOnWinners | string[] | [] | Commands executed on each winner after the match |
CommandsOnDefeated | string[] | [] | Commands executed on each loser after the match |
Type Codes
| Code | Game Mode |
|---|---|
FFA | Free For All — last player standing |
T | Team — last team standing |
FFADM | FFA Deathmatch — first to kill goal |
TDM | Team Deathmatch — team kill race |
TCTO | Team Capture the Orb — capture objectives |
Category Calculation
The category code is automatically calculated as {MaxPlayers}-{Type}. For example, a template with MaxPlayers: 4 and Type: "TDM" has category code 4-TDM.
Random Template Selection
Multiple templates can share the same category. When the matchmaker creates a match, it randomly picks one template from all templates that belong to that category. This acts as an automatic map rotation system — players in the same queue will play on different maps each match.
To add map variety to any game mode, simply create multiple templates with different Prefab files but the same MaxPlayers and Type. The matchmaker handles the rest automatically.
Example — Two maps for 4-player TDM:
templates/TDM-Castle.json:
{
"Prefab": "arena_castle.prefab",
"MaxPlayers": 4,
"Type": "TDM",
"TimeLimit": 300,
"Goal": 15,
"Presets": ["default-kit"]
}
templates/TDM-Forest.json:
{
"Prefab": "arena_forest.prefab",
"MaxPlayers": 4,
"Type": "TDM",
"TimeLimit": 300,
"Goal": 15,
"Presets": ["default-kit"]
}
Both templates share the category 4-TDM. When four players queue for TDM, the matchmaker will randomly select either TDM-Castle or TDM-Forest for that match.
Each template in the same category can have different settings (time limit, kits, goal, etc.). Only MaxPlayers and Type determine the category.
Winner/Loser Commands
The CommandsOnWinners and CommandsOnDefeated arrays allow you to run commands after each match. Two placeholders are available:
| Placeholder | Replaced With |
|---|---|
%player% | The player's display name |
%uuid% | The player's UUID |
Example:
{
"CommandsOnWinners": [
"give %player% Gold_Coin 10",
"msg %player% Congratulations on your victory!"
],
"CommandsOnDefeated": [
"give %player% Gold_Coin 2"
]
}
Default Templates
ArenaPvP ships with six default template files. If the templates/ directory is empty on first launch, these are generated automatically.
1vs1-STANDARD.json
{
"Prefab": "arena_2FFA.prefab",
"MaxPlayers": 2,
"Type": "FFA",
"TimeLimit": 180,
"Goal": 0,
"Presets": ["default-kit", "warrior-kit", "archer-kit"],
"AllowDropItems": false,
"AllowBlockPlace": true,
"AllowBreakBlock": false,
"DestructibleWorld": false,
"CommandsOnWinners": [],
"CommandsOnDefeated": []
}
2v2-STANDARD.json
{
"Prefab": "arena_4T.prefab",
"MaxPlayers": 4,
"Type": "T",
"TimeLimit": 180,
"Presets": ["default-kit", "warrior-kit", "archer-kit"]
}
FFA-STANDARD.json
{
"Prefab": "arena_4-6FFA.prefab",
"MaxPlayers": 4,
"Type": "FFA",
"TimeLimit": 180,
"Presets": ["default-kit", "warrior-kit", "archer-kit"]
}
FFADM-STANDARD.json
{
"Prefab": "arena_4-6FFADM.prefab",
"MaxPlayers": 4,
"Type": "FFADM",
"TimeLimit": 300,
"Goal": 10,
"Presets": ["default-kit", "warrior-kit", "archer-kit"]
}
TDM-STANDARD.json
{
"Prefab": "arena_4-6TDM.prefab",
"MaxPlayers": 4,
"Type": "TDM",
"TimeLimit": 300,
"Goal": 15,
"Presets": ["default-kit", "warrior-kit", "archer-kit"]
}
TCTO-STANDARD.json
{
"Prefab": "arena_4-6TCTO.prefab",
"MaxPlayers": 4,
"Type": "TCTO",
"TimeLimit": 300,
"Goal": 3,
"CarrierSpeedFactor": 0.7,
"Presets": ["default-kit", "warrior-kit", "archer-kit"]
}
Adding a Custom Template
To add your own arena, create a prefab map and then create a new .json file in the templates/ directory:
templates/my-arena-5v5.json:
{
"Prefab": "my_custom_map.prefab",
"MaxPlayers": 10,
"Type": "TDM",
"TimeLimit": 600,
"Goal": 30,
"Presets": ["warrior-kit", "archer-kit"],
"AllowDropItems": false,
"AllowBlockPlace": false,
"AllowBreakBlock": false,
"DestructibleWorld": false,
"CommandsOnWinners": ["give %player% Trophy 1"],
"CommandsOnDefeated": []
}
After creating or editing a template file, run /arena reload to load the changes without restarting the server.