
ViewDistanceTweaks
Automatically adjusts view and simulation distance per world to match what your server can handle - more distance when there is headroom, less before players notice lag.
Список изменений
ViewDistanceTweaks v2.10.0
Dynamic view distance and simulation distance adjustment per world, driven by what your server can actually carry at that moment.
The first stable release since 2.8.3, and the one that finally upgrades your config file instead of complaining about it. It carries everything the 2.9 betas built and the fifteen bugs they turned up — including one that has been in the release line since 2.4.
Your config.yml is topped up, not replaced
Bukkit writes the bundled config only when the file is missing, so a server that had ever started kept its original copy forever. Every option added since was simply absent, the feature behind it ran quietly on a code default, and the only advice the plugin could give was "rename the file and restart" — which costs you every value you had tuned. The version marker was never written back either, so the warning came back on every start and every reload with nothing you could do to satisfy it short of editing YAML by hand.
Missing blocks are now appended from the bundled file with their comments intact, and the marker moves up so the warning stops. Nothing existing is rewritten — YAML does not care what order top-level keys appear in, so appending cannot change the meaning of what is already there — and a copy is kept as config.yml.bak before the first write. Run against a real 2.8.2 config with hand edits, the only line that changed was version: 1 becoming version: 2. Your values, your comments, and keys this plugin has never heard of all survive.
New since 2.8.3
- Idle pre-generation. Builds terrain ahead of time, so players never wait for it. Runs when the last player logs off, or on demand via
/vdt pregen. It throttles against the same rolling MSPT average the distance engine uses, stops rather than slows when free heap runs low, and writes progress to disk so a crash or a nightly reboot resumes where it left off. Off by default. - Predictive pre-loading. Loads chunks along the path of a fast-moving player, so arriving somewhere does not stall the tick. It makes chunks ready server-side — nobody sees further, you just stop feeling the hitch. Off by default.
adjustment-mode: off. Never touches view or simulation distance at all, for servers that want only the pre-generation and pre-loading subsystems. Those run independently of the distance engine.- A readable Operating System chart on bStats, because the built-in one drills down on the raw Linux kernel string and scatters 90% of servers across ~94 slices.
Fixed since 2.8.3
- An out-of-range distance stopped the engine.
/vdt viewdistance 53was handed straight to a setter that accepts only 2 to 32 and threw. Worse, the override was stored before it was applied, so the next check re-applied it and threw again — taking override expiry, per-player overrides and every remaining world check with it, on every tick, until/vdt reload. Present in the release line since 2.4. - Per-world state was never cleaned up. Check counters, cluster bonuses and pending reverts are keyed by world name and nothing removed them, so servers that create worlds at runtime grew those maps for the lifetime of the process.
- Predictive pre-loading could stop the whole engine when a tracked player's last-known world had been unloaded.
- A failed chunk request deleted an entire pre-generation run — hours of work, with a log line that blamed the wrong thing.
- Pre-generation tripped the safeguard built to exclude it, clamping view distance while the plugin generated terrain by itself.
/vdt historyblamed tick load for changes that had nothing to do with it, reportingdecrease (mspt=1.9)on an idle server. It now names the bound that was actually exceeded.- The pre-generation ETA could be off by a factor of a hundred, reporting
2m 20sfor a run with hours left. It follows the generation rate now, and says so plainly while it cannot yet be known. /vdt updatereported the wrong version when up to date, and messages.yml shipped incomplete — the whole/vdt pregencommand surface existed only as code defaults and could not be customised.- Plus the chunk-complexity spiral, the diagonal pre-loading path,
/vdt profilerestoring properly, and several accounting fixes inside a pre-generation run.
Under the hood
The test suite went from 9 to 38. Every fix in this release was verified against the previous code first — a test that passes both before and after proves nothing.
Dependencies
- Paper 1.21.x / 26.x — required
- PlaceholderAPI — optional
- EssentialsX — optional, only for AFK detection
Support
Join our Discord: dc.gg/paperstream
Author: LucasTHCR
