
BetterReplay
Packet Based Player Recorder. BetterReplay is a server-side replay plugin for Paper and Folia-style scheduling. It records player and nearby entity activity on the server, saves the timeline, and replays it for viewers in-game.
Оцените первым
354
7
Список изменений
[Unreleased]
Added
/replay reloadcommand to re-readconfig.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, or still require a server restart- Frame-by-frame step controls during paused replay; step backward or forward one tick at a time via
⏮/⏭inventory buttons (slots 6–7) - Variable playback speed controls during active replay; adjust with
⏪ Slower/⏩ Fasterinventory buttons (slots 6–7) using configurable step increments - Current playback speed displayed in the action bar as
[X.Xx]during playback - New config keys
Playback.Speed-Step(default0.2) andPlayback.Max-Speed(default1.0) to control speed increment and upper bound - Replay viewer safety controls:
Playback.Viewer-Safety-Mode,Playback.Restore-Viewer-Location-On-Stop,Playback.Restore-Viewer-GameMode-On-Stop,Playback.Restore-Viewer-Flight-On-Stop, andPlayback.Restore-Viewer-State-On-Rejoin - Finalized binary
.brreplay storage for file and MySQL backends, including crash-safe append-log recording, lazy indexed loading, preserved recording start timestamps, startup recovery of orphaned temp logs, filtered export tooling, hidden benchmark/debug utilities, and temporary legacy JSON compatibility during migration - Replay protection commands and metadata, protected replay highlighting in
/replay list, and config-driven retention cleanup with duration parsing - Optional chunk baseline capture and chunk-aware playback for binary replays, including block-entity support, replay chunk caching,
Playback.Chunk-View-Radius,Playback.Chunk-Send-Limit-Per-Tick,Playback.Chunk-Clear-Limit-Per-Tick,Playback.Chunk-Timing-Diagnostics, andPlayback.Chunk-Mode - Split inventory recording into dedicated equipment-state and storage-snapshot events backed by raw item bytes, plus regression coverage for the new binary payloads and legacy JSON upgrade path
- New config key
Playback.Vanish-Viewer(defaulttrue) to hide replay viewers from live players during playback
Fixed
activeSessionsinRecorderManagerchanged toConcurrentHashMapto preventConcurrentModificationException(#33)- PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43)
- Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback
- Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups
- Equipment polling now reuses a single per-tick capture across concurrent recordings and only falls back to clean-player sweeps periodically, reducing repeated ItemStack serialization under high recording load
- Dirty inventory polls now reuse a shared short-lived storage snapshot cache across concurrent recordings, while clean fallback sweeps still force a fresh capture to preserve missed-change detection
- Nested replay inventory loss when starting a replay during an active replay (#31)
- Replay playback now returns viewers to their original location and gameplay state by default, including disconnect/rejoin recovery
- Replay controls getting stuck after replay ends (#27)
- Replay export now writes under the plugin data folder
- Chunk playback restore flow now handles unload timing and viewer return cases more reliably
- Replay chunk load probing now frees completed missing-chunk checks before scheduling the next async wave, so higher chunk send limits are not throttled by one-tick queue lag when many surrounding chunks were never recorded
- Replay chunk load probing now runs at
10xthe configured chunk send rate, so fastmissing-replay-chunkchecks do not throttle how quickly the viewer can discover whether nearby chunks were actually recorded - Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections
Changed
RecordingStopEventnow fires synchronously to fix async AntiCheatReplay compatibilityReplayManagernow exposeslistSavedReplaySummaries,protectSavedReplay,unprotectSavedReplay, and returnsReplayDeleteResultfromdeleteSavedReplay- Config settings ownership moved out of
Replayinto a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at
1.0xspeed;Playback.Max-Speedis enforced to a minimum of1.0 - Config keys for list settings were renamed from
list-page-size/list-protected-highlight-colortoList.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat
-SNAPSHOTbuilds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on
mainand the[Unreleased]section fordevalpha builds - Binary replay archives now use format version
2; new.brinventory payloads store split equipment/storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha.brinventory archives are intentionally unsupported
Файлы
BetterReplay-1.4.0-alpha.64.jar(1.42 MiB)
ОсновнойМетаданные
Канал релиза
Alpha
Номер версии
1.4.0-alpha.64
Загрузчики
BukkitFoliaPaperPurpurSpigot
Версии игры
1.21–26.1.2
Загрузок
13
Дата публикации
03.06.2026
