Repository navigation
ReportSystem 2.1.4 — Critical: Overwatch & Replay inventory loss fixed
This release fixes a critical data-loss bug affecting servers that use the Overwatch review and Replay system. Updating is strongly recommended.
What was wrong
When a staff member started an Overwatch review, the plugin replaced their inventory with replay control items. The code path that restores the inventory afterwards never ran, and the one usable backup was deleted before it could be used. Staff members finished a review with an empty inventory and their items were permanently lost.
In addition, disconnecting or crashing during a review caused Bukkit to save an empty inventory to disk before the delayed task could execute, and restarting a replay via "Watch Again" overwrote the original item backup with an empty inventory snapshot.
Fixes
- State capture: The player's inventory, location, game mode, health, hunger, saturation, flight state and fire ticks are now captured before the replay starts.
- Idempotent snapshots: The snapshot is now idempotent (
putIfAbsent). The "Watch Again" option restarts the replay without overwriting the original item backup. - Restore/cleanup ordering: Cleanup was deleting the backup before the inventory had been restored from it. The restore pipeline now executes before clearing cached data, with automatic fallback to ReplayControlManager's copy if needed.
- Verdict screen: Removed the unreachable
hasSavedState()condition from the verdict GUI so submitting a verdict unconditionally restores inventory and location. - Synchronous disconnect protection: If a player disconnects or crashes during an Overwatch review or replay, the inventory and original location are restored synchronously in the same tick before Bukkit saves player data to disk.
- Server shutdown / reload: When the plugin is disabled (
/stopor/reload), all active review sessions are cleaned up and inventories are returned immediately. - Drop protection: Review items (Clock / Book / Barrier) can no longer be dropped into the world or interacted with during the post-replay verdict stage.
- Review concurrency & database queue: Staff can no longer trigger multiple review sessions concurrently, and unstarted reports are safely unassigned back to the
PENDINGqueue if a replay fails to initialize. - Timeout restoration: The 10-minute AFK review timeout now restores the player's inventory and location as well.
Compatibility & Installation
- Affected versions: 2.0.1 and earlier
- Data-loss risk: High in prior versions (resolved in 2.1.4)
- Configuration changes: None
- Database changes: None
- Drop-in replacement for Spigot, Paper, BungeeCord, and Velocity (Minecraft 1.20 - 1.21.x).