Guide

Playlists and voting

Install a prebuilt playlist

The ElDewrito Server Hosting repository supplies playlists for 0.7, including Halo Online, Halo 3, modded rotations, and a minimal example. Install one selected playlist per server; copying every playlist on top of the others does not combine them.

  1. Stop the container or Windows watcher and server. Back up autoexec.cfg and the entire data directory, especially preferences, data/server, and custom variants. Keep existing mod packages needed to restore the previous rotation.
  2. Clone the repository or download its ZIP, then extract it.
  3. First copy the contents of 0. Stock maps and gametypes/data into the server's data directory, merging folders. This installs the stock map and gametype variants expected by the playlists.
  4. Next copy the selected playlist's data contents into the same destination, allowing its files to overwrite the previous configuration. On Linux this destination is /opt/eldewrito/data; on Windows it is data beside eldorado.exe. Do not create data/data, and do not copy only voting.json while leaving required variants behind.
  5. Inspect the resulting data/server/voting.json and any mods.json; install/check the referenced content as described below. Replace Voting.SystemType 0 in autoexec.cfg with the following block, keeping the initial map and gametype commands for the opening match:
Voting.JsonPath "data/server/voting.json"
Voting.SystemType 1
Voting.ReloadJson
  1. Start the server, finish the opening match, and check the vote, winning map, required mod downloads, and a rejoin. Test the intended map/mode combinations before making the rotation public.

On Windows, the repository also provides the beta Get playlist #.ps1 helper. Save it beside eldorado.exe, replace # in its filename with the selected folder's numeric ID, and run it from a PowerShell session whose working directory is that game installation. For example, after saving it as Get playlist 6.ps1, run & '.\Get playlist 6.ps1' for the minimal example. Review the downloaded script before running it and follow PowerShell execution-policy guidance if your system blocks it; do not disable policy globally just to install a playlist.

The helper downloads the current repository, force-copies the stock variants first, then force-copies the chosen playlist. It writes to the current working directory, makes no backup, and does not enable voting for you. The manual procedure works on either host and makes the overwrite order easier to control.

Add a small voting rotation

For a small rotation you can edit yourself, start with base-game maps. The voting reference covers custom variants, compatible-map restrictions, templates, mods, and veto playlists. You can also refer to data\server\voting.json.example, but do not activate it unchanged: one of its examples contains a trailing comma, which is invalid JSON.

  1. Stop the container or Windows watcher and server, then save the following as data/server/voting.json in the game directory. It offers Slayer on Guardian or Valhalla. Use internal map identifiers, such as riverworld for Valhalla, rather than display names.
{
  "maps": [
    { "displayName": "Guardian", "mapName": "guardian" },
    { "displayName": "Valhalla", "mapName": "riverworld" }
  ],
  "types": [
    { "displayName": "Slayer", "typeName": "Slayer" }
  ]
}
  1. In autoexec.cfg, replace Voting.SystemType 0 with the following block. Keep the initial map and gametype commands for the opening match. You can also select voting through Host Settings → Voting Mode → Vote.
Voting.JsonPath "data/server/voting.json"
Voting.SystemType 1
Voting.VoteOptionCount 2
Voting.DuplicationLevel 1
Voting.ReloadJson
  1. Start the server, join, and finish the opening match. Check that the vote offers only the intended map/mode pairs and that the winning match loads. Reconnect after the transition and repeat after a deliberate restart.

Voting.SystemType is 0 for no voting, 1 for voting, and 2 for veto. The example uses duplication level 1, the UI's Gametype or Map Can Repeat, so the same Slayer gametype can appear with two different maps. Veto is a different workflow using vetoPlaylist; merely switching this two-map voting example to veto does not supply an ordered veto playlist.

Rotate mods and custom variants safely

A playable rotation entry is a compatible combination of mod package, base map or Forge variant, and gametype. Install the variants on the server using Custom Content, and play each combination privately before adding it to a public vote.

  • displayName is the voting label. mapName and typeName must identify content the server can load; changing a label does not rename a map.
  • A type's specificMaps limits it to its compatible maps. This prevents a specialist mode from appearing on every map in the global list.
  • A type's modPack names a mod entry. data\server\mods.json maps names under mods to an object with a package_url. Keep that name consistent with the voting entry and keep the URL tied to the intended package version.
  • Server.ModsJsonFile selects the mod list for automatic package downloads at startup. Its default path is data\server\mods.json, not data\server\server.json.
  • Use a stable direct package-download URL that you have permission to share. Players need to be able to download it without signing in. Check that the link works outside your own account and avoid expiring attachment links.
  • commands and endOfMatchCommands can apply and undo per-mode settings. Avoid overrides in your first playlist; when you add one, restore what the next match should inherit rather than allowing state to leak across modes.

ED Resurgence Voting JSON Builder creates 0.7 voting.json and mods.json files. Point its variant-folder selection at the installation's data directory, which contains map_variants and game_variants. Save the generated files to your server's configured paths. Check the supplied mod URLs and try each package before adding it to your rotation; some URLs may be outdated or no longer work.