Sueta

BetterReplay

1.5.1

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 repl

·Plugin
  1. 1.5.1latestlast week

    [1.5.1]

    Fix Folia compatibility
    Security
    - 2026-08-29: Replay loading now bounds file, MySQL, ZIP, LZ4, Zstd, GZIP, timeline-index, and chunk-payload allocations; validates declared sizes and codec metadata; and rejects malformed archive structures before they can exhaust server memory - 2026-08-30: Replaced the archived org.lz4:lz4-java dependency with the maintained at.yawk.lz4:lz4-java fork while preserving legacy LZ4 replay decoding (#97)
    18 downloads
  2. 1.5.0Aug 26, 2026

    [1.5.0]

    Added
    - 2026-08-24: Configurable MiniMessage-based replay messages and persistent control-item metadata, plus replay viewer PDC state controls for safer inventory interactions - 2026-08-24: Replay playback effects for ender pearls, splash potions, arrows, tridents, combat damage, health changes, hurt sounds, and critical hits - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-08-24: Updated PacketEvents to 2.13.0 and restored replay player skin metadata dispatch - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failu
    1089 downloads
  3. 1.5.0-alpha.19Aug 26, 2026

    [Unreleased]

    Added
    - 2026-08-24: Configurable MiniMessage-based replay messages and persistent control-item metadata, plus replay viewer PDC state controls for safer inventory interactions - 2026-08-24: Replay playback effects for ender pearls, splash potions, arrows, tridents, combat damage, health changes, hurt sounds, and critical hits - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-08-24: Updated PacketEvents to 2.13.0 and restored replay player skin metadata dispatch - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff
    14 downloads
  4. 1.5.0-alpha.18Aug 24, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk
    46 downloads
  5. 1.5.0-alpha.17Aug 24, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk
    3 downloads
  6. 1.5.0-alpha.16Jul 29, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk
    511 downloads
  7. 1.5.0-alpha.15Jun 24, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk
    7 downloads
  8. 1.5.0-alpha.14Jun 24, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk
    8 downloads
  9. 1.5.0-alpha.13Jun 24, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk
    15 downloads
  10. 1.5.0-alpha.12Jun 24, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/ - 2026-06-23: New binary .br archives now compress timeline payloads and chunk payloads with Zstd level 1, declare payloadCompression: "zstd", bump the binary replay compatibility floor to 1.5.0-alpha.12, and keep LZ4 replay/chunk archives readable through metadata or frame-magic compatibility fallback
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk
    15 downloads
  11. 1.5.0-alpha.11Jun 23, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk retrieval failures when chunk recording is enabled - 2026-06-16: Chunk recording and chunk replay now move tracked-player chunk discovery, replay chunk refresh, legacy live block comparisons, and viewer packet sends onto the proper Folia entity or region scheduler - 2026-06-16: Recording session entity/playe
    12 downloads
  12. 1.5.0-alpha.10Jun 17, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk retrieval failures when chunk recording is enabled - 2026-06-16: Chunk recording and chunk replay now move tracked-player chunk discovery, replay chunk refresh, legacy live block comparisons, and viewer packet sends onto the proper Folia entity or region scheduler - 2026-06-16: Recording session entity/playe
    94 downloads
  13. 1.5.0-alpha.9Jun 16, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures - 2026-06-16: Recording chunk baseline capture now schedules live chunk reads on the owning Folia region to avoid async chunk retrieval failures when chunk recording is enabled - 2026-06-16: Chunk recording and chunk replay now move tracked-player chunk discovery, replay chunk refresh, legacy live block comparisons, and viewer packet sends onto the proper Folia entity or region scheduler
    28 downloads
  14. 1.5.0-alpha.8Jun 14, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond - 2026-06-14: Replay stop cleanup now schedules live block and chunk restore reads on their owning Folia region to avoid asynchronous world access failures
    33 downloads
  15. 1.5.0-alpha.7Jun 14, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled - 2026-06-12: Velocity replay handoff support via /replay play <name> server:<backend>, including remote replay launch and return-to-origin flow after playback stops - 2026-06-14: Config key Velocity.Default-Replay-Server to route /replay play <name> to a default Velocity replay backend when no server:<backend> argument is supplied
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings - 2026-06-14: Velocity replay handoff failures now send a clear chat error when the transfer request cannot be sent, the proxy reports a failure, or the proxy does not respond
    20 downloads
  16. 1.5.0-alpha.6Jun 12, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots - 2026-06-12: Saved replay listings and replay-name tab completion now share a 5-second cache that refreshes from storage when stale, and MySQL replay overwrites now update created_at so recent listings reflect replaced recordings
    36 downloads
  17. 1.5.0-alpha.5Jun 12, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings - 2026-06-12: Legacy JSON replays whose inventory snapshots upgrade into split equipment/storage events now recreate recorded players correctly after replay seek/skip state reconstruction - 2026-06-12: Legacy JSON replay loading now accepts null inventory content slots from older inventory_update snapshots
    13 downloads
  18. 1.5.0-alpha.4Jun 8, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports - 2026-06-08: Fixed all compiler warnings. Maven build and test runs no longer emit unused annotation-processing or Mockito self-attach agent warnings
    49 downloads
  19. 1.5.0-alpha.3Jun 6, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering - 2026-06-06: Recorded-player menu teleports now use FoliaLib asynchronous teleports instead of direct player teleports
    38 downloads
  20. 1.5.0-alpha.2Jun 5, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback - 2026-06-04: Expanded bStats telemetry with SimplePie charts for storage type, recording chunk capture, playback viewer safety and chunk playback settings, vanish-viewer, and retention state plus retention age normalization to days when cleanup is disabled
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering
    30 downloads
  21. 1.5.0-alpha.1Jun 5, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility - 2026-06-04: Dev alpha publishing now derives the next -alpha.N version from existing Modrinth releases for the current base version instead of GITHUB_RUN_NUMBER, so prereleases track the next unreleased line (now 1.5.0-alpha.N) and workflow renames cannot reset alpha numbering
    18 downloads
  22. 1.4.0-alpha.69Jun 4, 2026

    [Unreleased]

    Added
    - 2026-04-17: Frame-by-frame step controls during paused replay; step backward or forward one tick group at a time via ⏮ and ⏭ inventory buttons - 2026-04-19: Variable playback speed controls during active replay, current speed action-bar feedback, and config keys Playback.Speed-Step plus Playback.Max-Speed - 2026-04-27: Finalized binary .br replay 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, and temporary legacy JSON compatibility during migration - 2026-04-27: Hidden admin utilities: /replay export, /replay debug dump, /replay debug info, and /replay benchmark, with output written under the plugin data folder - 2026-04-29: Replay protection commands and metadata, protected replay highlighting in /replay list, config-driven retention cleanup with human-readable duration parsing, and deletion safeguards for protected replays - 2026-05-14: 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, and Playback.Chunk-Mode - 2026-05-30: Inventory recording split 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 - 2026-05-31: 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, and Playback.Restore-Viewer-State-On-Rejoin - 2026-06-02: /replay reload command to re-read config.yml, restart retention scheduling, and report which changed settings apply immediately, only to new sessions, on future checks, or after restart - 2026-06-02: New config key Playback.Vanish-Viewer (default true) to hide replay viewers from live players during playback
    Changed
    - 2026-04-11: RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - 2026-04-19: Update checks now treat -SNAPSHOT builds as their corresponding release version - 2026-04-20: Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - 2026-04-22: Replay sessions now always start at 1.0x speed, and Playback.Max-Speed is enforced to a minimum of 1.0 - 2026-04-27: Binary replay archives now use format version 2; new .br inventory payloads store split equipment and storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported - 2026-04-29: ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - 2026-04-30: Config keys for list settings were renamed from list-page-size and list-protected-highlight-color to List.Page-Size and List.Protected-Highlight-Color, with automatic startup migration - 2026-04-30: Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - 2026-05-14: Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - 2026-06-04: README content was reorganized into overview sections with dedicated Architecture, Configuration, and Commands documents under docs/
    Removed
    - 2026-04-28: General.Enable-Benchmark-Command; /replay benchmark is now always permission-gated through replay.benchmark
    Fixed
    - 2026-04-13: Replay controls no longer get stuck after replay ends (#27) - 2026-04-15: Held-item swaps and hotbar slot changes are now captured immediately for more accurate replay inventory playback - 2026-04-16: Nested replay inventory loss when starting a replay during an active replay (#31) - 2026-04-17: Backward step controls now move exactly one tick group per click instead of skipping two - 2026-04-19: activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#33) - 2026-04-22: Config migration now preserves wrapped pseudo-comments, keeps the managed header stable, and avoids accumulating blank lines between root sections - 2026-04-27: Replay export now writes under the plugin data folder - 2026-04-30: PacketEvents block-break recording is now rescheduled onto the server thread to avoid Netty-thread contention and unsafe shared-state mutation (#43) - 2026-05-14: Chunk playback restore flow now handles unload timing and viewer return cases more reliably, and replay chunk load probing no longer bottlenecks missing-chunk checks under higher send rates - 2026-05-30: Equipment polling and dirty inventory polling now reuse shared short-lived caches across concurrent recordings to reduce repeated ItemStack serialization work without losing fallback accuracy - 2026-05-31: Replay playback now returns viewers to their original location and gameplay state by default, including disconnect and rejoin recovery - 2026-06-02: Replay viewers can no longer pick up live world items during playback, preventing replay inventory lockups from stray pickups - 2026-06-03: Replay viewer startup teleports now use asynchronous teleports for safer Paper and Folia compatibility
    11 downloads
  23. 1.4.0-alpha.66Jun 3, 2026

    [Unreleased]

    Added
    - /replay reload command to re-read config.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/⏩ Faster inventory 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 (default 0.2) and Playback.Max-Speed (default 1.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, and Playback.Restore-Viewer-State-On-Rejoin - Finalized binary .br replay 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, and Playback.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 (default true) to hide replay viewers from live players during playback
    Fixed
    - activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#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 10x the configured chunk send rate, so fast missing-replay-chunk checks 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
    - RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at 1.0x speed; Playback.Max-Speed is enforced to a minimum of 1.0 - Config keys for list settings were renamed from list-page-size/list-protected-highlight-color to List.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat -SNAPSHOT builds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - Binary replay archives now use format version 2; new .br inventory payloads store split equipment/storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported
    28 downloads
  24. 1.4.0-alpha.64Jun 3, 2026

    [Unreleased]

    Added
    - /replay reload command to re-read config.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/⏩ Faster inventory 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 (default 0.2) and Playback.Max-Speed (default 1.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, and Playback.Restore-Viewer-State-On-Rejoin - Finalized binary .br replay 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, and Playback.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 (default true) to hide replay viewers from live players during playback
    Fixed
    - activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#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 10x the configured chunk send rate, so fast missing-replay-chunk checks 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
    - RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at 1.0x speed; Playback.Max-Speed is enforced to a minimum of 1.0 - Config keys for list settings were renamed from list-page-size/list-protected-highlight-color to List.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat -SNAPSHOT builds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - Binary replay archives now use format version 2; new .br inventory payloads store split equipment/storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported
    27 downloads
  25. 1.4.0-alpha.62Jun 3, 2026

    [Unreleased]

    Added
    - /replay reload command to re-read config.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/⏩ Faster inventory 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 (default 0.2) and Playback.Max-Speed (default 1.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, and Playback.Restore-Viewer-State-On-Rejoin - Finalized binary .br replay 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, and Playback.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
    Fixed
    - activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#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 10x the configured chunk send rate, so fast missing-replay-chunk checks 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
    - RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at 1.0x speed; Playback.Max-Speed is enforced to a minimum of 1.0 - Config keys for list settings were renamed from list-page-size/list-protected-highlight-color to List.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat -SNAPSHOT builds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - Binary replay archives now use format version 2; new .br inventory payloads store split equipment/storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported
    10 downloads
  26. 1.4.0-alpha.60Jun 3, 2026

    [Unreleased]

    Added
    - 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/⏩ Faster inventory 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 (default 0.2) and Playback.Max-Speed (default 1.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, and Playback.Restore-Viewer-State-On-Rejoin - Finalized binary .br replay 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, and Playback.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
    Fixed
    - activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#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 10x the configured chunk send rate, so fast missing-replay-chunk checks 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
    - RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at 1.0x speed; Playback.Max-Speed is enforced to a minimum of 1.0 - Config keys for list settings were renamed from list-page-size/list-protected-highlight-color to List.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat -SNAPSHOT builds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - Binary replay archives now use format version 2; new .br inventory payloads store split equipment/storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported
    17 downloads
  27. 1.4.0-alpha.58May 31, 2026

    [Unreleased]

    Added
    - 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/⏩ Faster inventory 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 (default 0.2) and Playback.Max-Speed (default 1.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, and Playback.Restore-Viewer-State-On-Rejoin - Finalized binary .br replay 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, and Playback.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
    Fixed
    - activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#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 - 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 10x the configured chunk send rate, so fast missing-replay-chunk checks 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
    - RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at 1.0x speed; Playback.Max-Speed is enforced to a minimum of 1.0 - Config keys for list settings were renamed from list-page-size/list-protected-highlight-color to List.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat -SNAPSHOT builds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - Binary replay archives now use format version 2; new .br inventory payloads store split equipment/storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported
    22 downloads
  28. 1.4.0-alpha.56May 31, 2026

    [Unreleased]

    Added
    - 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/⏩ Faster inventory 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 (default 0.2) and Playback.Max-Speed (default 1.0) to control speed increment and upper bound - Finalized binary .br replay 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, and Playback.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
    Fixed
    - activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#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 - 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 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 10x the configured chunk send rate, so fast missing-replay-chunk checks 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
    - RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at 1.0x speed; Playback.Max-Speed is enforced to a minimum of 1.0 - Config keys for list settings were renamed from list-page-size/list-protected-highlight-color to List.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat -SNAPSHOT builds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds - Binary replay archives now use format version 2; new .br inventory payloads store split equipment/storage slot bytes directly, while legacy JSON replay loading remains supported and older alpha .br inventory archives are intentionally unsupported
    29 downloads
  29. 1.4.0-alpha.54May 14, 2026

    [Unreleased]

    Added
    - 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/⏩ Faster inventory 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 (default 0.2) and Playback.Max-Speed (default 1.0) to control speed increment and upper bound - Finalized binary .br replay 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, and Playback.Chunk-Mode
    Fixed
    - activeSessions in RecorderManager changed to ConcurrentHashMap to prevent ConcurrentModificationException (#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 - Nested replay inventory loss when starting a replay during an active replay (#31) - 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 10x the configured chunk send rate, so fast missing-replay-chunk checks 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
    - RecordingStopEvent now fires synchronously to fix async AntiCheatReplay compatibility - ReplayManager now exposes listSavedReplaySummaries, protectSavedReplay, unprotectSavedReplay, and returns ReplayDeleteResult from deleteSavedReplay - Config settings ownership moved out of Replay into a dedicated typed, comment-preserving config manager with versioned migrations - Replay sessions now always start at 1.0x speed; Playback.Max-Speed is enforced to a minimum of 1.0 - Config keys for list settings were renamed from list-page-size/list-protected-highlight-color to List.Page-Size/List.Protected-Highlight-Color; values are auto-migrated on startup - Update checks now treat -SNAPSHOT builds as their corresponding release, and Modrinth publishing metadata now includes Purpur, Spigot, and Bukkit loaders - Modrinth uploads now publish the matching release changelog on main and the [Unreleased] section for dev alpha builds
    144 downloads
  30. 1.4.0-alpha.52May 14, 2026
    18 downloads
  31. 1.4.0-alpha.49May 5, 2026
    21 downloads
  32. 1.4.0-alpha.45May 1, 2026
    12 downloads
  33. 1.4.0-alpha.43May 1, 2026
    7 downloads
  34. 1.4.0-alpha.40May 1, 2026
    7 downloads
  35. 1.4.0-alpha.38May 1, 2026
    9 downloads
  36. 1.4.0-alpha.36Apr 29, 2026
    8 downloads
  37. 1.4.0-alpha.34Apr 28, 2026
    7 downloads
  38. 1.4.0-alpha.31Apr 28, 2026
    6 downloads
  39. 1.4.0-alpha.29Apr 28, 2026
    6 downloads
  40. 1.4.0-alpha.25Apr 22, 2026
    8 downloads
  41. 1.4.0-alpha.23Apr 22, 2026
    14 downloads
  42. 1.4.0-alpha.22Apr 22, 2026
    7 downloads
  43. 1.4.0-alpha.18Apr 20, 2026
    11 downloads
  44. 1.4.0BetterReplay 1.4.0Apr 20, 2026
    37 downloads

Similar projects

Plugin →