ZReplay is a first-party, Paper-only replay plugin for Minecraft Java 26.x servers. It records player sessions, staff target captures, and staff radius captures into its own replay format, then plays them back through an immersive Adventure-mode workflow with independent controls per viewer. Built for moderation, incident review, and content capture, with quota controls, three storage backends, and append-only audit logging.
Features:
Use Cases:
Commands:
Tab-completion is included for all arguments.
Permissions:
Permissions do not imply each other — grant each node explicitly.
Requirements:
Optional:
Note: ZReplay targets Paper 26.x and Java 25 only — it does not support Spigot, Folia, proxies, or older Minecraft versions. Custom item models render only for viewers who have your server's resource pack loaded; ZReplay ships the model components, not the assets.
Features:
- Self-service player recordings with configurable quota and cooldown controls
- Staff target recording that silently follows a named player across worlds (recorded players are not notified)
- Staff radius recording (1–128 blocks) that follows the staff anchor across worlds
- 20 Hz capture rate with a per-second seek index for precise scrubbing
- Dynamic capture radius for staff named recordings — max(32, view-distance × 16) blocks
- Captures placed, broken, burned, faded, formed, grown, physics-driven, and explosion-cleared blocks (cancelled block events are skipped)
- Player ghosts use the real player's skin, fetched asynchronously from Mojang when offline
- Custom minecraft:item_model support on ghost equipment and dropped items, preserved in replays
- Full playback controls: location restore, seek, pause, resume, speed, restart, and stop — independent per viewer
- Viewer isolation during playback — locked to Adventure mode, invulnerable, non-collidable, and shielded from live-world block packets
- Cross-world playback with automatic viewer teleport between recorded worlds
- YAML, SQLite, and MySQL metadata storage backends (JDBC drivers auto-resolved by Paper's loader)
- Separate player and staff browse GUIs with pagination and filters (name, initiator, date range, stop reason, kind)
- Chat confirmation before any recording deletion
- Restart-aware start capping and overlap-stop through optional ZRestart integration
- Vanish-aware quit handling via the shared vanished metadata key
- PlaceholderAPI expansion with recording status, quota, elapsed/remaining time, and staff placeholders
- Plain-text, append-only audit log for staff recordings, deletions, and cleanup
- Public Bukkit service API and cancellable lifecycle events for other plugins
Use Cases:
- Staff moderation and cheat review — silently record a suspected player and replay their session
- Radius capture of an area during an incident, raid, or event
- Player-facing highlight and clip recording with self-service quotas
- Post-incident investigation with browse filters and audit trails
- Building a moderation toolchain on top of the public API and lifecycle events
- Network-wide recording metadata via the MySQL backend
Commands:
- /zreplay start / stop / list — Self-recording and your recording GUI
- /zreplay record <player> — Staff: record a named player (console allowed if enabled)
- /zreplay record radius <radius> — Staff: record a radius around yourself (1–128)
- /zreplay stop <player> / stop radius — Staff: stop a recording you initiated
- /zreplay browse [IGN|UUID] — Browse all or one target's recordings
- /zreplay playback pause|resume|seek <sec>|speed <value>|restart|stop — Playback controls
- /zreplay reload — Reload config and messages
Tab-completion is included for all arguments.
Permissions:
- zreplay.use — Self-recording, own list, own playback, and own deletion (default: op)
- zreplay.staff — Staff recording, browse, and playback of any recording (default: op)
- zreplay.admin — Delete any recording and reload configuration (default: op)
Permissions do not imply each other — grant each node explicitly.
Requirements:
- Paper 26.1.2+
- Java 25+
- PacketEvents 2.12.1+ (required — ZReplay disables itself without it)
- One storage backend: YAML (default), SQLite, or MySQL
Optional:
- ZRestart 1.4+ — for restart-aware capping and overlap-stop
- PlaceholderAPI 2.12.2+ — for placeholder support
- SuperVanish, PremiumVanish, EssentialsX, or CMI — for vanish-aware quit handling
Note: ZReplay targets Paper 26.x and Java 25 only — it does not support Spigot, Folia, proxies, or older Minecraft versions. Custom item models render only for viewers who have your server's resource pack loaded; ZReplay ships the model components, not the assets.
