Per-world view and simulation distance, adjusted automatically from MSPT and chunk load.
This is a BETA. accepted-release-types defaults to release, so this build is not offered to existing installations unless an admin opts in by hand. It contains one fix that matters to almost every server, and it needs confirmation on a real one before it goes out as a stable.
If your start script sets -Xms equal to -Xmx, this fix is for you. That includes Aikar's flags and the default of essentially every hosting panel.
The memory safeguard was reading the wrong number
Reported by a user running ZGC with a fully committed heap: the safeguard blocked every distance increase, permanently, on a server with plenty of memory left.
The free-heap figure was unused space in the current heap plus whatever the JVM was still allowed to grow by. Commit the heap in full at startup and that second term is zero forever, leaving raw occupancy. Raw occupancy counts garbage that has not been collected yet, and every modern collector deliberately lets the heap fill before reclaiming it. So the number described where the GC cycle happened to be, not how much memory the server actually needed.
What made it total rather than occasional is that an increase needs passed-checks-for-increase consecutive clean checks, and any veto resets that counter. A minority of false readings is enough to pin a server at its minimum distance indefinitely.
It now measures the lowest heap usage seen in the last minute. Right after a collection, usage is the live set, so that figure is a real measurement of what the server needs rather than a snapshot of the GC cycle.
Measured on a 1GB ZGC heap: the old build logged five vetoes, made zero distance changes in six minutes and finished where it started. The new build logged none, made eleven, and climbed from simulation distance 4 to 12. On a heap with room to spare, where the old reading happened to be right, both behave identically.
ZGC is hit hardest and from the start. Aikar's G1 flags hold out longer, because they begin marking early, but they go the same way once live data passes roughly half the heap.
If you lowered min-free-percent to work around this, you can put it back to 15.
/vdt status says what it means
The free-heap line used to print a placeholder 100% until the first check ran, up to start-delay after every boot and reload, while showing the real figure in megabytes beside it on the same line. It now reports a measurement from the first second. The megabyte figure is labelled live, because that is what it is: heap held by live data, not by uncollected garbage.
Why 2.11.1 and not 2.11.0
2.11.0 only ever went out as an alpha. The update checker compares the leading numeric part and ignores the suffix by design, so a 2.11.0 release would have compared equal to the 2.11.0 alpha, and every alpha install would have been told it was up to date forever. Going straight to 2.11.1 avoids that.
Everything from 2.11.0-ALPHA is included: per-world MSPT, /vdt analyze, ping throttling, pre-generation border clamping and scheduling, and the faster climb defaults.