Overview
A server-side replay system that records gameplay and plays it back in-game — no client mod, no resource pack.
Donut Replay records what happens on your server — players and the entities around them — saves it as a compact timeline, and plays it back in-game for any viewer you choose. It is built for moderation and PvP review: catch cheaters, settle reports, and rewatch fights frame by frame.
- Paper · Folia · Canvas
- MC 1.21 → 26.2
- Java 21
It runs entirely on the server. Players need no replay mod, no resource pack, and no special client — playback works by spawning and driving replay entities for the viewer.
What it records
Donut Replay has four independent capture modes. Turn on the ones you want — they all save into the same browsable library.
- Anticheat-flagged — when a player trips one of your configured Grim, Vulcan or TotemGuard checks, a recording starts from the first flag and runs for 30 seconds (re-flagging extends it). Always saved.
- PvP — fights are captured automatically. The recording is kept when the fight is decided (someone dies), with optional nearby-player inclusion so 3rd and 4th parties in a brawl are in the replay too.
- Manual server-wide — flip
/replay recordallto record everyone online right now; players who join mid-recording are added live. - Rolling capture (experimental) — a DVR for your whole server: continuously records every eligible player in hourly clips, keeping only the last few hours.
Highlights
- Packet-perfect 1:1 playback of movement, combat, blocks and inventories
- In-game viewer with pause, frame-step, rewind/forward, speed control and teleport
- GUI control panel (
/replay menu) — toggle every recorder without touching files - File or MySQL storage, GZIP-compressed, with automatic retention cleanup
- Per-world whitelist / blacklist / overrides
- Public API and events for integration with your own plugins
- Native Folia scheduling — region-thread-safe, not a Spigot port
Next steps
Head to Installation to get the plugin running, then skim the Commands and tune the config.yml to your server.