config.yml reference

Every key in Donut Replay's config.yml, explained, with the defaults.

This is the complete default config.yml. Edit it, then run /replay reload. Each section is broken down below.

General:
  Compress-Replays: true          # GZIP saved replays (smaller files)
  Storage-Type: file              # "file" (single server) or "mysql" (network)
  MySQL:
    host: host
    port: 3306
    database: database
    user: username
    password: password

list-page-size: 10                # replays per page in /replay list

DonutReplay:
  Viewer:
    Safety: true                  # viewer takes no damage / hunger while watching
    Vanish: true                  # viewer is hidden from other players

Anticheat:
  Mode: AUTO                      # AUTO | grim | vulcan
  Grim:
    Flags: [killaura, reach, fly]
  Vulcan:
    Flags: [killaura, reach, flight]
  TotemGuard:
    Enabled: true
    Flags: [autototem, badpackets]

Recording:
  Flagged:
    Enabled: true
  PvP:
    Enabled: true
    WindowSeconds: 30
    SaveEvenWithoutDeath: false
    StopOnDeath: true
    PostDeathSeconds: 3
    IncludeNearbyRadius: 20
    MaxParticipants: 12

Worlds:
  Whitelist: []
  Blacklist: [minecraft_spawn]
  Overrides: {}

Retention:
  FlaggedDays: 7
  PvpDays: 7
  ManualDays: 7

Experimental:
  RollingCapture:
    Enabled: false
    WindowHours: 12
    ChunkMinutes: 60

General & storage

KeyDefaultMeaning
Compress-ReplaystrueGZIP replays on disk — strongly recommended, much smaller files.
Storage-Typefilefile stores JSON under the plugin folder; mysql uses a shared replays table.
MySQL.*Connection details, used only when Storage-Type: mysql.
list-page-size10How many replays per page in /replay list.

Viewer

Controls what happens to a staff member while they watch — see In-game viewer.

KeyDefaultMeaning
DonutReplay.Viewer.SafetytrueNo damage or hunger loss while watching.
DonutReplay.Viewer.VanishtrueHidden from other online players while watching.

Anticheat

Picks the combat anticheat for flag-triggered recording. Full breakdown on the Anticheat hooks page.

KeyDefaultMeaning
Anticheat.ModeAUTOAUTO detects on startup (Grim wins if both present); or force grim / vulcan.
Anticheat.Grim.Flagskillaura, reach, flyGrim check names that trigger a recording (matched by “contains”).
Anticheat.Vulcan.Flagskillaura, reach, flightVulcan checks (note: Vulcan’s flight check is flight, not fly).
Anticheat.TotemGuard.EnabledtrueEnable the separate TotemGuard hook.
Anticheat.TotemGuard.Flagsautototem, badpacketsTotemGuard checks to record on.

Recording

The master switches for what gets captured automatically.

Flagged

KeyDefaultMeaning
Recording.Flagged.EnabledtrueRecord players the moment your anticheat flags them.

PvP

KeyDefaultMeaning
Recording.PvP.EnabledtrueAuto-record fights.
WindowSeconds30Rolling window; each new hit resets it (no split).
SaveEvenWithoutDeathfalsefalse keeps a fight only if someone dies; true keeps every fight.
StopOnDeathtrueFinalize as soon as the fight is decided instead of waiting the full window.
PostDeathSeconds3Grace after the deciding kill (captures death animation / totem pop).
IncludeNearbyRadius20Also record players within this many blocks of a fighter. 0 disables.
MaxParticipants12Hard cap on players tracked by one PvP recording.

Worlds

Per-world rules. Names are case-insensitive.

KeyDefaultMeaning
Worlds.Whitelist[]Empty = record in all worlds. Add names to record only those.
Worlds.Blacklist[minecraft_spawn]Worlds where nothing is ever recorded. Takes priority over the whitelist.
Worlds.Overrides{}Per-world tweaks, e.g. FlagOnly: true to allow only anticheat recordings there.
Worlds:
  Whitelist: []
  Blacklist:
    - minecraft_spawn
  Overrides:
    arena_world:
      FlagOnly: false

Retention

Auto-delete old clips so disk use stays bounded. 0 = never auto-delete.

KeyDefaultMeaning
Retention.FlaggedDays7Days to keep anticheat-flagged clips.
Retention.PvpDays7Days to keep PvP clips.
Retention.ManualDays7Days to keep manual server-wide clips.

Experimental — Rolling capture

A DVR for the whole server: continuously records every eligible player in hourly chunks, keeping only the last WindowHours. Browse it with /replay last12hcheck.

KeyDefaultMeaning
Experimental.RollingCapture.EnabledfalseTurn the rolling DVR on.
WindowHours12How many hours of clips to keep.
ChunkMinutes60Minutes per clip. Smaller = lower RAM for big player counts.