config.yml reference
Every key in Kernel 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
Overwatch:
RequireEmptyInventory: true # require an empty inventory to enter Overwatch
NoteMaxLength: 256 # review notes longer than this are trimmed
Report:
Enabled: true # master switch: command + death prompt + menu button
DeathPrompt:
Enabled: true # "report your killer" hint after a PvP death
Grief:
RecordSeconds: 30 # how long a Grief report records the suspect
NotifyReporter: true
Cheat:
ClipLimit: 10 # max clips attached to a Cheat report (newest first)
SameDayOnly: true # only attach clips from the same calendar day
RequireKilledReporter: true # accept a Cheat report only if the target killed the reporter today
Limits:
MinPlaytimeHours: 12 # playtime needed before a player may /report
SameTargetCooldownMinutes: 60 # wait before reporting the SAME target again
DailyLimit: 10 # max reports per player per day
Retention:
ProtectClips: true # report clips are exempt from retention cleanup
Days: 30 # days to keep reports before auto-purge (0 = forever)
Action:
BanCommand: "ban {player} {duration} {reason}"
DefaultDuration: "3d"
Anticheat:
Mode: AUTO # AUTO | grim | vulcan
Grim:
Flags: [killaura, reach, fly]
Vulcan:
Flags: [killaura, reach, flight]
TotemGuard:
Enabled: true
Flags: [autototem, badpackets]
Recording:
Optimize:
SkipUnchangedMoves: true # don't write a position when nothing moved
MoveHeartbeatTicks: 100 # still force-write a position every N ticks (anchors seek/resync)
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:
DeathCam:
Enabled: true # save a clip on EVERY death, with a few seconds of lead-up
PreRollSeconds: 5 # seconds BEFORE the death to include
PostDeathSeconds: 3 # seconds AFTER the death to keep
IncludeNearbyRadius: 16 # also include players within N blocks (0 = victim + killer only)
RetentionDays: 7 # days to keep death clips
General & storage
| Key | Default | Meaning |
|---|---|---|
Compress-Replays | true | GZIP replays on disk — strongly recommended, much smaller files. |
Storage-Type | file | file stores JSON under the plugin folder; mysql uses a shared replays table. |
MySQL.* | — | Connection details, used only when Storage-Type: mysql. |
list-page-size | 10 | How many replays per page in /replay list. |
Viewer
Controls what happens to a staff member while they watch — see In-game viewer.
| Key | Default | Meaning |
|---|---|---|
DonutReplay.Viewer.Safety | true | No damage or hunger loss while watching. |
DonutReplay.Viewer.Vanish | true | Hidden from other online players while watching. |
Overwatch
The review queue. Full flow on the Overwatch review page.
| Key | Default | Meaning |
|---|---|---|
Overwatch.RequireEmptyInventory | true | Require an empty inventory to enter Overwatch, so items can’t be lost or duplicated. Strongly recommended on. |
Overwatch.NoteMaxLength | 256 | Maximum length of a review note (characters). Longer notes are trimmed. |
Report
Player-filed cheat & grief reports. Full breakdown — limits, bypass nodes and the punish action — on the Player reports page.
| Key | Default | Meaning |
|---|---|---|
Report.Enabled | true | Master switch for the whole feature (command + death prompt + menu button). |
Report.DeathPrompt.Enabled | true | Message the victim a “report your killer” hint after a PvP death. |
Report.Grief.RecordSeconds | 30 | Seconds the suspect is recorded when a Grief report is filed. |
Report.Grief.NotifyReporter | true | Tell the reporter when the recording starts and finishes. |
Report.Cheat.ClipLimit | 10 | Most clips attached to one Cheat report (newest first). |
Report.Cheat.SameDayOnly | true | Only attach clips from the same calendar day as the report. |
Report.Cheat.RequireKilledReporter | true | Accept a Cheat report only if the target killed the reporter today (anti-fake-report). |
Report.Limits.MinPlaytimeHours | 12 | Hours of playtime needed before a player may /report (0 = none). |
Report.Limits.SameTargetCooldownMinutes | 60 | Cooldown before reporting the same target again (0 = none). |
Report.Limits.DailyLimit | 10 | Max reports a player may file per day. |
Report.Retention.ProtectClips | true | Report clips are exempt from auto-deletion, so evidence is never lost. |
Report.Retention.Days | 30 | Days to keep reports before they auto-purge (0 = forever). |
Report.Action.BanCommand | ban {player} {duration} {reason} | Console command run by the “punish” button. Placeholders: {player}, {duration}, {reason}. |
Report.Action.DefaultDuration | 3d | Default ban length for the quick punish button. |
Anticheat
Picks the combat anticheat for flag-triggered recording. Full breakdown on the Anticheat hooks page.
| Key | Default | Meaning |
|---|---|---|
Anticheat.Mode | AUTO | AUTO detects on startup (Grim wins if both present); or force grim / vulcan. |
Anticheat.Grim.Flags | killaura, reach, fly | Grim check names that trigger a recording (matched by “contains”). |
Anticheat.Vulcan.Flags | killaura, reach, flight | Vulcan checks (note: Vulcan’s flight check is flight, not fly). |
Anticheat.TotemGuard.Enabled | true | Enable the separate TotemGuard hook. |
Anticheat.TotemGuard.Flags | autototem, badpackets | TotemGuard checks to record on. |
Recording
The master switches for what gets captured automatically.
Performance
Cuts the bulk out of every recording at the source: an idle/AFK player otherwise writes 20 identical positions a second.
| Key | Default | Meaning |
|---|---|---|
Recording.Optimize.SkipUnchangedMoves | true | Skip writing a position when nothing moved or turned since the last tick. Strongly recommended on. |
Recording.Optimize.MoveHeartbeatTicks | 100 | Even when unchanged, force-write a position this often (20 = 1s) so seeking and resync stay accurate. |
Flagged
| Key | Default | Meaning |
|---|---|---|
Recording.Flagged.Enabled | true | Record players the moment your anticheat flags them. |
PvP
| Key | Default | Meaning |
|---|---|---|
Recording.PvP.Enabled | true | Auto-record fights. |
WindowSeconds | 30 | Rolling window; each new hit resets it (no split). |
SaveEvenWithoutDeath | false | false keeps a fight only if someone dies; true keeps every fight. |
StopOnDeath | true | Finalize as soon as the fight is decided instead of waiting the full window. |
PostDeathSeconds | 3 | Grace after the deciding kill (captures death animation / totem pop). |
IncludeNearbyRadius | 20 | Also record players within this many blocks of a fighter. 0 disables. |
MaxParticipants | 12 | Hard cap on players tracked by one PvP recording. |
Worlds
Per-world rules. Names are case-insensitive.
| Key | Default | Meaning |
|---|---|---|
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.
| Key | Default | Meaning |
|---|---|---|
Retention.FlaggedDays | 7 | Days to keep anticheat-flagged clips. |
Retention.PvpDays | 7 | Days to keep PvP clips. |
Retention.ManualDays | 7 | Days to keep manual server-wide clips. |
Experimental — Death Cam
An “instant replay” of deaths. Every eligible player is buffered in memory (a small rolling window — never written to disk), so a clip is saved only when a player dies — for any cause: PvP, lava, fall, a mob. The clip starts PreRollSeconds before the death, so you can see how it happened, and runs PostDeathSeconds after. If nobody dies, nothing is ever written. Browse the clips with /replay deaths.
| Key | Default | Meaning |
|---|---|---|
Experimental.DeathCam.Enabled | true | Buffer everyone and save a clip on each death. |
PreRollSeconds | 5 | Seconds of footage before the death — the “rewind”. |
PostDeathSeconds | 3 | Seconds to keep after the death (death animation / totem / killer). |
IncludeNearbyRadius | 16 | Also include other players within this many blocks of the death. 0 = victim + killer only. |
RetentionDays | 7 | Days to keep death clips before auto-deletion. |