Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for LucasTHCR

Per-world view and simulation distance, adjusted automatically from MSPT and chunk load.

Report ViewDistanceTweaks?

R

2.10.1-RELEASE

ViewDistanceTweaks v2.10.1

Dynamic view distance and simulation distance adjustment per world, driven by what your server can actually carry at that moment.

Four fixes from a pass over the parts of the plugin the earlier reviews never reached. Nothing here changes how distances are chosen — these are all about a state that could not be left, a measurement that rested on an assumption, and two features that quietly did not work.

Fixed

  • Emergency relief could stay engaged indefinitely. Relief clears a world's weather and freezes its clock, so what matters most about it is that it ends. The only path back sat at the end of the per-world check behind six early returns, and two of them stay reachable while relief is active. A world that recovered its tick time while free heap was still low hit the memory-safeguard return every cycle and never reached the check — weather off, clock frozen, for as long as memory was tight. A temporary override did the same thing permanently, because that return is the first thing the check does. Lifting no longer depends on any of it.

  • The MSPT collection window rested on an assumption the API does not make. It read tickTimes[length - 1] as the tick that had just finished. Paper's contract for that method is "a sample of the servers last tick times" — nothing is said about order. A ring buffer written modulo its length, which is the ordinary way to keep the last N of anything, would leave the same reading at that index for a hundred ticks at a stretch, and the window would have recorded it a hundred times over. It now averages the whole sample, which needs no assumption and is right either way.

  • Two downloads could overwrite each other. The auto-updater is reachable from the startup check and from /vdt update download, both asynchronous, and both wrote the same partial file. The hash mismatch that followed was reported as "corrupted or tampered with" — which an admin reads as an attack rather than as the plugin racing itself. A second download is now refused cleanly. The partial file is also removed after any failure rather than only on that one branch, and a download URL that is not HTTPS is refused.

  • The EssentialsX AFK hook depended on load order. It was resolved once during startup and never again, and EssentialsX was never declared as a soft dependency — so whether it was found at all came down to which plugin Bukkit happened to enable first. Switching afk-use-essentials on and running /vdt reload did nothing until the next restart, with no line to say so. It is declared now, and re-resolved on every reload.

Also

  • The config shipped with the plugin now uses the same plain-ASCII punctuation as the project page, and the bStats link in the source names the registered project.

Under the hood

43 tests. Each fix was checked against the previous code first — a test that passes before and after proves nothing.

Dependencies

Support

Join our Discord: dc.gg/paperstream

Author: LucasTHCR

Information

Published
August 23, 2026
Author
0Downloads

Platforms

Paper
Paper
1.21–1.21.11