English | 中文
Current status: Beta. Features may be unstable; use with caution in production.
Found an issue? Open an Issue (please use the latest plugin version and include your Paper / Purpur version, server logs, and reproduction steps).
This project is not affiliated with the ServerReplay mod; it is not an official port or fork and only aims for compatibility with its replay file formats.
Server-side replay recording plugin for Paper, generating replay files compatible with both Flashback Mod and Replay Mod. Supports Paper / Purpur and other Paper-based servers (Java 1.21.8). No ProtocolLib dependency.
/replay start <player>start recording/replay stop <player>stop and save.zipor.mcprfile- Auto-save when a player leaves
- Native Paper command tree (Brigadier) with vanilla-style target selectors such as
@p,@a,@s,@e[type=player] - Tested recording content: player actions, chunks, entities, scoreboards, time, chat, bossbar, tellraw, title, actionbar, subtitle
| Project | Platform | Output | Extra dependencies | Dual format | Crash recovery |
|---|---|---|---|---|---|
| ServerReplayBukkit (this project) | Paper / Purpur 1.21.8 | .zip + .mcpr |
None | Yes both |
Yes, repacks temp files on restart |
| ServerReplay | Fabric mod | .mcpr + .zip |
Fabric API + Kotlin | Yes | Yes |
| FlashbackServer | Paper / Folia 1.21.5-1.21.11 | .zip |
None | No | No |
| PaperRecorder | Paper fork 1.20.1 | .mcpr |
Core replacement | No | No |
| ISeeYou | Leaves / Leaf 1.20/1.21 | .mcpr |
Server-side ReplayAPI | No | No |
Note: AdvancedReplay focuses on in-game replay and is not listed here because it does not produce .mcpr / .zip files for client-side playback.
Playback formats: .zip is the Flashback mod compatible format (open with the Flashback mod client); .mcpr is the Replay Mod compatible format (open with the Replay Mod client).
Build artifact: use
plugin/build/libs/ServerReplayBukkit-<version>.jar. This is the only jar to distribute; thecore/andadapter-*/module outputs are build intermediates and do not need to be distributed.
- Put the jar into the server
plugins/directory - Start Paper 1.21.8;
config.ymlis generated automatically on first launch - Run in-game:
/replay start <player> [flashback|mcpr|both]
/replay stop <player> [flashback|mcpr|both]
/replay status
/replay reload
Notes:
- Without a format argument,
startusesdefault-formatfromconfig.yml(defaultflashback, outputs.zip);stopstops all formats for that player - Player argument supports vanilla-style target selectors such as
@p,@a,@s,@e[type=player] config.ymlconfigures the default recording format; run/replay reloadafter editingconfig.ymlhas alanguageoption (zh_CN/en_US) for command messages; run/replay reloadafter editing- Recordings are saved to
plugins/ServerReplayBukkit/replays/; open.zipwith Flashback mod (0.39.7+) and.mcprwith the Replay Mod client
serverreplay.commands.replay, available to operators by default.
- Version: Paper 1.21.8; Paper-based servers only, pure Bukkit / Spigot is not supported
- More Minecraft versions are planned, newer versions have priority
- Heavy NMS usage; cross-version compatibility is poor
- Plugin coexistence status:
- Grim (anticheat): being tested
- ViaVersion: being tested
- Matrix and other anticheats: planned
- Other plugins not listed: untested
- Hot reloading (e.g. PlugMan) is not supported; commands are registered through the Paper lifecycle API. Use
/replay reloadfor config reloads; restart the server for a full reload.
- Added a language file system (
lang/directory andlanguageconfig option,zh_CN/en_US); command messages can be switched or customized - Log messages now use server-relative paths instead of local absolute paths
Full history (Chinese only): CHANGELOG.md.
This plugin registers its API through the Bukkit ServicesManager, so other plugins can inspect recording state or inject custom packets:
RecordingApi:start,stop,isRecording,sessionsRecordingSession: per-session query and custom packet injection
RecordingApi api = Bukkit.getServicesManager().load(RecordingApi.class);API status: experimental. The API may change at any time during the beta period; do not depend on it being stable before 1.0.0.
This project references the behavior and file formats of the following projects; the code is independently implemented and does not include their code or assets:
- Flashback mod: referenced the
.zipformat (metadata.json + segmented binary action stream), replay action structure, and unsupported packet rejection rules; generated flashback files open directly in the Flashback client. Permission granted by the author Moulberry (Discord, 2026-08-04). - Replay mod / ReplayStudio: referenced the
.mcprformat (recording.tmcpr frame structure, metaData.json, configuration phase switching and registry synchronization) and the replay-side handling of login, configuration, and chunk packets, for MCPR output compatibility. - ServerReplay mod: referenced the overall approach and configuration direction of Fabric server-side mcpr/flashback recording. It also inspired the plugin name; using the name
ServerReplayBukkitwas approved by the original author senseiwells (Discord, 2026-08-06). - FlashbackServer plugin: referenced the Paper server-side flashback recording architecture without ProtocolLib, including snapshot building, configuration phase synchronization, and chunk/entity snapshot handling.
By submitting a Pull Request, you agree to license your contribution under GNU AGPL-3.0.
This project is developed and maintained by me, licensed under GNU AGPL-3.0.
Copyright (C) 2026 noone89