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.8.1-RELEASE

ViewDistanceTweaks v2.8.1

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

Bugfix release. Two of these affect anyone using per-world check intervals or the chunk generation safeguard, so updating is worthwhile even if 2.8 looked fine.

Fixed

  • /vdt simulate did not predict what the engine actually does. The preview summed each world's weight as chunk-weight × priority, while the live path also divides by the complexity multiplier. With use-complexity-weighting: true the two therefore worked from different totals, and the preview showed proactive targets that never happened — which is precisely what /vdt simulate exists to rule out.
  • Chunk generation was counted twice. A newly generated chunk fires both ChunkPopulateEvent and ChunkLoadEvent with isNewChunk(), and both were counted. Every rate was roughly double the truth, so chunks-per-second-threshold: 15 actually tripped at around 7 real chunks per second, and /vdt status reported inflated numbers. The safeguard was consistently twice as aggressive as configured. Both listeners are still in place — the second one covers server paths where populate does not fire — but a chunk is now counted once per window.
  • A world with its own, shorter ticks-per-check ran its first check on placeholder values. The shared snapshot (MSPT, weight sum, variance) was only refreshed one full global ticks-per-check after the start delay. Any world configured to check more often than that fired first and read the startup placeholders: an MSPT of 50, which sits above the default decrease threshold, so it cut distances on a perfectly healthy server, with a weight sum of 0.0001 feeding the proactive formula on top. This happened after every start, every /vdt reload and every /vdt enable. Servers on the default config were not affected.
  • /vdt profile required the preset permission. Those are not the same level of trust: /vdt preset rewrites your config.yml on disk, while /vdt profile only lays a temporary overlay that normal undoes. Granting someone the in-event switch also granted them the config file. It now uses its own node, viewdistancetweaks.vdt.command.profile.

Dependencies

Support

Join our Discord: dc.gg/paperstream

Author: LucasTHCR

Information

Published
August 16, 2026
Author
1Downloads

Platforms

Paper
Paper
1.21–26.2