Hard block on merges that would silently produce broken output.
OverlapValidator — pre-merge guard that probes each selected replay for its ClientboundSetTimePacket anchor, computes its server-gameTime interval ([start, start + totalTicks]), and checks every pair for non-empty intersection. If any pair is disjoint, the Merge button stays disabled and a localised tooltip explains why. Wired into both MergeUi-classic (1.21.x) and MergeUi-modern (26.1+).multiview.button.merge_selected.no_overlap i18n key in en_us.json and fr_fr.json..flashback zip files via FileSystems.newFileSystem(...) instead of expecting a pre-extracted folder — matches the on-disk layout Flashback actually produces.A real user case surfaced the bug: someone ran a merge across two .flashback files recorded 11 days apart. The merge succeeded but produced visually broken output — entities vanished, others stuck with default rotations and no equipment. Root cause: server-side entity IDs are local to each recording client and there is no UUID-based matching for non-player entities, so any merge of non-overlapping POVs guarantees cross-source ID collisions. The fix is defensive: refuse upfront rather than emit silent garbage.
Map<Set<Path>, Result>) so checkbox toggles stay responsive.UNKNOWN (not NO_OVERLAP) when an anchor is missing or the file cannot be read — we never block what we cannot verify.
Merges multiple Flashback replays from the same session into a single unified replay — an “omniscient observer” view combining the union of chunks, players, and events seen from each POV.