vprog-0.9.1.jar
Curse Maven Snippet
What's new
Vanilla Progression 0.9.1 - Minecraft 26.2
The lag fix. A server running 0.9.0 stalled for several seconds about every five minutes, and the building scanner was doing it. Nothing about the game changed: no cost, no reward, no building, no packet. Saves from 0.9.0 carry over untouched.
- Minecraft 26.2 - Fabric Loader 0.19.5 - Fabric API 0.161.0+26.2 - Java 25
- Drop-in replacement for
vprog-0.9.0.jaron both the server and every client.
The five-minute stall
Every building is re-checked once every five minutes, as a safety net for a change the event-driven scanner might have missed. That check read the world around every marker - a box of 97 x 97 x 33 blocks, about forty-nine chunks - and when a chunk was not in memory it loaded it, on the server thread, synchronously. A town nobody was standing in (everyone out mining, in the Nether, or a dedicated server with several towns) had none of its chunks in memory, so the safety check pulled the whole town in, eight chunks a tick, blocking the tick for as long as that took. The chunks were not kept, so five minutes later it happened again.
Three things changed:
- The scanner never loads a chunk any more. If a chunk a building needs is not in memory,
the pass stops, publishes nothing, and the building keeps the level it last earned. It is
re-checked the next time somebody is there.
/vprog scanstill reads everything, because you asked it a direct question. - The safety check is a trickle, not a wave. Instead of every building of every town on the same tick, one building at a time, spread evenly across the five minutes, and each town on its own schedule. Same total work, flat cost.
- A block that only changed state no longer restarts the scan. Wheat growing, farmland drying, a furnace lighting, a door opening, a piston moving: none of these can change what a building counts, but every one of them used to throw away the scan in progress for every marker within 48 blocks and start it over. In a living town with a field and a smelter that meant the scanner never finished and a building's level could sit stale for five minutes. Now only a change that could actually move a requirement - a different block, water becoming a source, a door half, a solid block appearing or vanishing - triggers a rescan.
The practical effects you should see: no periodic hitch, buildings level up promptly after the last block is placed even next to a farm, and a town you are not standing in costs the server nothing.
Under the hood
- Four gametests pin the new behaviour: a cold pass defers instead of generating terrain, the direct path still loads, and a state-only change does not mark a building dirty. All 294 required tests pass.
- Raids, bandit patrols and raid losses already refused to touch an unloaded chunk; the scanner was the only thing in the mod that pulled the world in from a tick.
- Known and not yet fixed: an active settlement event makes the settlement screen's data packet differ every second, so it is re-sent to every member once a second. Bandwidth, not lag; it is on the list.
Not in this release
The serverbound/minecraft:custom_payload ... found 1 bytes extra kick that one player has
seen is not produced by this mod. The mod sends two packets from client to server, neither
has changed since the port, and other players on the same server are not kicked. That message
means one mod is present on both that client and the server in different versions. Compare
the mods folder of the affected client against the server's; Packet Fixer does not address
this.
This mod has no additional files

