Structure Editor v1.4.7
The actual fix for cold-chunk saves losing entities. Root cause found with the 1.4.6 diagnostics on Bisect and reproduced/verified locally.
Root cause: the server was still pausing. The v1.3.4 pause fix injected into MinecraftServer.getPauseWhenEmptySeconds, but MinecraftDedicatedServer overrides that getter (reading server.properties directly) and the pause check calls it virtually — so on every dedicated server the injection never ran. Bisect's log: Server empty for 60 seconds, pausing.
While paused, the task queue still drains, so mst's requests appear to work and chunk tickets still load block chunks — but world ticks stop, and entityManager.tick → processPendingLoads is what collects finished entity-file reads. Every chunk sits at PENDING forever (and can never unload), vanilla's saveStructure iterates an empty entity store, and the template is written with zero entities and success: true. A nearby player unpauses the server (why it always worked with someone standing there); the first save after a restart lands inside the grace window (why v1.4.3 "worked once").
Fix: MinecraftDedicatedServerMixin applies the same injection to the override. Both mixins are required. Gated by keep_server_ticking (default on).
Verified on a local Fabric 1.21.10 dedicated server with pause-when-empty-seconds=5 and StructureBlockSaver installed:
- fix on: 3/3 cold saves of a persistent named wither skeleton captured, no
pausingline in 61 s of empty uptime - fix off (negative control): server paused at 5 s, same save sat
PENDINGfor 8 s and wrote 0 entities — Bisect's exact fingerprint
Deploy: replace the mst jar (exactly one copy in mods/) and restart. After startup, read_server_log(grep: "pausing") must return nothing; get_chunk_state on a cold chunk after a save must show entity_load: LOADED. Belt-and-braces alternative if you ever run without this mod: pause-when-empty-seconds=0 in server.properties.