Skip to main content

Configure Reverse

Reverse generates a full, commented template the first time it starts. Pick the file for the plugin you are configuring: Each role also reads a separate license.yml in its own data folder. Its license-key is used during startup, not refreshed by reload. See activation.
Merge examples into the generated file. The snippets below show individual sections, not complete replacement configurations. Keep the other generated sections.
Reverse generates YAML using lower-kebab-case field names. Edit the generated files for your build, retain unknown-to-you sections, and quote text containing <...>, :, #, or other YAML-sensitive characters.
New to this page? You do not need to change everything at once. Start with the reload vs. restart table at the bottom, then edit one section at a time and reload.

Shared storage section

Every role has storage in config.yml:
Using shared storage? Prefer fallback-to-spatial: false. A node falling back to private local files cannot see the shared SQL/MongoDB catalog.

Recorder settings

  • adapter selects a protocol capture backend shipped with this build. The current built-in id is packetevents. An unknown id fails startup with the known ids; installing another plugin does not register an adapter. Changing it requires restart.
  • chunk-capture-radius controls the loaded-chunk capture radius around active players. Radius 4 describes a 9×9 horizontal area. It does not mean Reverse will load or generate every chunk within that square. See recorder capture.

Player settings

  • adapter selects a protocol playback backend shipped with this build. The current built-in id is packetevents. Selection is case-sensitive, and an unknown id fails startup with the known ids. Changing it requires restart. See protocol adapters for the implementation boundary.
  • playback-world-name names the shared void playback world. Use a dedicated name, not a gameplay world you expect Reverse to reconstruct.
  • hide-real-players controls extra cross-world player hiding. Same-world players outside a viewer’s replay session are already hidden. Changing it requires restart.
  • open-access gives every viewer the catalog’s administrative access policy. This includes management operations, not just viewing. Keep it false for owner-private recordings.
  • gui configures standalone catalog/details menus. These are initialized only when availability is disabled at startup.

Network settings: player and lobby

The lobby’s generated node ID defaults to lobby-1 instead. Recorder does not have this network section. Backend and node identifiers accept 1–64 characters from A–Z, a–z, 0–9, _, ., and -. Redis coordinates nodes; it does not replace SQL or disk replay storage. See the complete network setup. Availability is opened once at startup from the built-in SQL/Redis backends. Installing a third-party plugin does not inject another configured backend. The player and lobby still expose their existing availability service through the API; integrations borrow that service rather than reopen or replace the running backend.

Lobby settings

The lobby keeps storage, network, and open-access in config.yml. Text lives in messages.yml, and menus live in gui.yml. Its open-access policy has the same administrative implications as the player’s. It does not have a player playback-world or recorder capture-radius section.

Messages, menus, and display

  • Menus documents catalog and details in gui.yml, item fields, actions, visibility states, and placeholders.
  • Display documents layout.yml, HUD, sidebar, and MiniMessage.
  • Every role’s messages live in messages.yml. Player/recorder retain their role sections; lobby message keys are at the root.
Player and lobby create missing files without rewriting existing ones. To retain custom menus from an older combined configuration, copy the contents of gui into gui.yml without the gui: wrapper. For lobby messages, copy the contents of messages into messages.yml without the messages: wrapper. Embedded sections in config.yml are no longer read.

Which changes need a restart?

Reload handlers update selected runtime settings. Do not assume a changed YAML value recreated an existing database pool or network backend. See operations. Changing storage.recordings-folder does not move or import recordings. Stop the affected servers and transfer the complete dataset yourself before restarting with the new path; see storage and backups. The configuration generated by your installed release is the full, authoritative list of available settings.

Customize the experience