
<a style="padding-right: 0.5rem" href="https://discord.gg/akbd8EPSgr"></a>
Player View Distance Controller (PVDC) is a lightweight yet powerful Paper plugin that gives full control over view distance. It boosts performance and offers extensive customisation, including permissions, automatic performance modes, AFK handling, and more. With support for LuckPerms, GeyserMC and PlaceholderAPI, it integrates smoothly into any server.
Visit the docs for information on how to use this plugin.
Key Features
- Per-player control: Each player has their own max view distance, which can be set and saved individually by themselves or by another player.
- Global control: Easily set the max view distance of all online players.
- MSPT‑based dynamic mode: Automatically reduce view distance when MSPT increases, helping to stabilise performance.
- Ping‑based adjustments: Automatically reduce view distance for players with high ping to improve client performance.
- AFK view restriction: AFK players can have their view distances restricted while AFK to reduce unnecessary chunk loading and ticking.
- LuckPerms integration: There are many permissions available and max view distances can be set for groups or individual players via Luckperms (LuckPerms is not required).
- Saves data persistently: Automatically sets max view distances when players connect to the server.
- Bedrock support: Players connecting via GeyserMC are fully supported and bedrock players can have custom default values.
- Very lightweight: The plugin is very light and can even greatly improve performance as the server may have to send less chunk data to players! Entities, blocks and fluids outside view distance are also not ticked, improving performance.
- Multi-language support: All messages are customisable and you can even add your own languages.
- PlaceHolderAPI support: The plugin contains an internal expansion with some useful placeholders.
- Console support: Most commands can be executed from the console.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
|
R
v2.3.3
|
23h ago | 1 | |||
|
R
v2.3.2
|
23h ago | 1 | |||
|
R
v2.3.1
|
23h ago | 1 | |||
|
R
v2.3.0
|
23h ago | 1 | |||
| 23h ago | 1 | ||||
|
R
v2.2.0
|
23h ago | 1 | |||
|
R
v2.1.2
|
23h ago | 1 | |||
|
R
v2.1.1
|
23h ago | 1 | |||
|
R
v2.1.0
|
23h ago | 1 | |||
|
R
v2.0.2
|
23h ago | 1 | |||
|
R
v2.0.1
|
23h ago | 1 | |||
|
R
v2.0.0
|
23h ago | 1 | |||
|
R
v1.9.0
|
23h ago | 1 | |||
|
R
v1.8.0
|
23h ago | 1 | |||
|
R
v1.7.1
|
23h ago | 1 | |||
|
R
v1.7.0
|
23h ago | 1 | |||
|
R
v1.6.1
|
23h ago | 1 | |||
|
R
v1.6.0
|
23h ago | 1 | |||
|
R
v1.5.0
|
23h ago | 1 | |||
|
R
1.4.0
|
23h ago | 1 | |||
|
R
1.3.0
|
23h ago | 1 | |||
| 23h ago | 1 | ||||
| 23h ago | 1 | ||||
| 23h ago | 1 |
- Fix lang files resetting on server restart and reduce lang manager bloat
- Only save dynamic mode
enabledto disk and not the whole config, fixing issue #21 - Add optional player data saving configuration by @ttugrul in #22. Thank you 😁!
- Use
minandmaxvalues before optimising view distance for dynamic/ ping modes instead of after - Add
send-dynamic-msgsconfig option, false by default - Improve config file comments and default messages
- Fix error on tab completion of player names
- OP players now have no bypass commands by default, so you may wish to add these with your permission system.**
- Add
sync-simulation-distanceoption to allow for chunk ticking customisability - Use world context when considering LP nodes and recalculate view distance on world change
- Make all bypasses off for everyone by default (ops without the permission nodes will no longer have bypass perms)
- Make ~40 bug fixes and general improvements
- Add
zero-chunks-afkconfig option to allow for no chunk loading when AFK (use with caution) - Significant codebase optimisations and refactoring to prepare for future API
- Make plugin more customisable with more config options
<br />
- Add migration guides to docs
- Add search functionality to docs
<br />
- Check if a player is on Bedrock edition with the Geyser API rather than using the "." prefix which could be customised
- Fix PVDC not always detecting LP changes and using them incorrectly when multiple nodes were changed
- Fix coming out of AFK setting view distance to the wrong value and maxdistance bypass being used incorrectly in the code
- Remove useless
chunksPingconfig value
- ConfigUpdater library not working properly
- Add dynamic mode
- Add ping mode (the two modes can work together!)
- Create [new docs (all old info and LOADS of new info has been put here)](https://docs.wyzebb.dev/docs/pvdc/intro)
- Add offline player support for some commands
- Add
afkOnJoinoption to restrict view distance on join - Allow ability to use "none" in language files to stop a message being sent
- Add config updating library to set new config keys in
config.yml,ping-mode.ymlanddynamic-mode.yml - Remove reload command as the reloaded values weren't actually used (will implement this properly in the future)
- Improve console support
- Completely overhaul README with page similar to docs info page
- Fix LOTS of bugs and change small things for user QoL
- Improve chunk calculator efficiency and refactor saving data for performance and reduce bloat, particularly where LuckPerms is involved
- Change error, player offline and placeholder messages and usages and default configs
- Improve backwards compatibility
- Add console support to all commands
- Make reset command work properly when resetting other people
- Make reset command logic more accurate
- Check if permission changes contain 'pvdc' before setting view distances for players
- Performance improvements
- Bug fixes
- Add backwards compatibility by allowing -1 in the config files for chunksOthers to be disabled
- Add /pvdc <chunks> shortcut subcommand
- Backend performance improvements
- Chunks set by others should be reset when setting own view distance
- Retrieve existing PlayerDataHandler instance instead of creating a new instance
- Switch HashMap to ConcurrentHashMap to ensure thread safety
- Add more defensive design for the event of config folder deletion
- Bug fixes and small changes
- Merge distance calculation for LuckPerms changes and joining for efficiency and so that after LuckPerms changes are made, a message is displayed
- Make LuckPerms changes only update the player's view distance once after changes are made (great performance boost!)
- Send a different message depending on if the trigger is a LuckPerms event
- Ensure bypass permissions are always respected
- Fix display-max-join-msg has no effect
- Only send update message on join if enabled in config
- Alter default chunks too high message to be less wordy
- Fix maxdistance permission having no effect sometimes
- Add more robust error logging
- Make LuckPerms pick the greatest permission assigned for maxdistance
- Make plugin pick largest LuckPerms maxdistance permission
- Check for max distance bypass permission on join
- Update documentation significantly with lots of new information
- Create zh_CN.yml by @YuanYuanOwO in https://github.com/Wyzebb/PlayerViewDistanceController/pull/11 Thanks!
- Minor optimisations
- Completely revamp the system of priority for calculating max view distances of players. Graphics have been made to explain this.
- Add PlaceholderAPI support, with an expansion for chunks and afk (see documentation)
- Add reset command to reset a player's max view distance to the max (or the max allowed by LuckPerms permissions if installed)
- Add update checker
- Add more AFK customisability and functionality (when logging off, etc)
- Add new multi-language system, with English and Russian currently shipping by default (thanks to JustCheburek on my Discord for the Russian translation)
- Remove prefixes system (default bedrock values can be customised in config.yml and for other prefixes, just use LuckPerms)
- Add bstats metrics (which may be put on documentation pages in the future)
- Add Folia task scheduler support, so the AFK system works on Folia
- Make the plugin work without LuckPerms installed (it is now a soft depend)
- Add max-distance bypass and AFK bypass permissions
- Make maxdistance permission be the max for setting your own view distance
- Make plugin more performant and RAM-efficient
- Fix LOADS of permission-based bugs present in previous versions (see full changelog)
- Fix absolutely tonnes of bugs and broken features
- Update Documentation
- Add AFK detection and restrict view when AFK to improve server performance (with config options)
- Make reload config actually work
- Fix
selfpermission node should beset-self - Get permission nodes from groups and inherited groups in addition to user-specific nodes
- Make max view distance the greater value out of any assigned permissions and view distances assigned with commands or in the config files
- Fix LuckPerms not working
- Lots of other minor changes
- Update Documentation
- Lots of bug fixes
- Re-add Minecraft 1.20.x support
- Add
helpandgetsubcommands - Update permission names to be more intuitive (check the README for the updated permission nodes!)
- Make LuckPerms optional
- Remove plugin debug messages in the console
- Fix critical bug when not using LuckPerms
- Overhaul default messages and colours
- Improve plugin documentation
- Improve code and make it more readable
- Fixed lots of bugs
- Fix incorrect permission logic for setting your own max view distance
#### **_THIS UPDATE CHANGES THE ROOT PERMISSION NODE FROM
viewdistance TO pvdc: UPDATE YOUR PERMISSIONS WHEN UPDATING THE PLUGIN_**- Add separate permissions for changing your own view distance and the view distance of others
- Fix broken permissions system to now take permissions into account when not op
- Add no permission message to config.yml
- Fixed bugs
- Mark plugin as Folia compatible by @tech-6 in https://github.com/Wyzebb/PlayerViewDistanceController/pull/6
- Improve look of help message
- Update to only support 1.21+
## New Contributors
- @tech-6 made their first contribution in https://github.com/Wyzebb/PlayerViewDistanceController/pull/6 - thanks!
- Added ability to set max view distances via Luckperms permissions
- Fixed bugs
- Ensure compatibility with mc1.21.1
- Added reload subcommand along with permissions
- Update and fix README
- Fix git workflow
- Update config and plugin.yml
- Improve codebase and ensure config messages cannot be null
- Fixed bugs
- Added tab autocomplete
- Added new command manager, which automatically registers subcommands and registers them to a help page
- Overhauled config (improve instructions and default messages and remove separate section for console messages to avoid colour issues, which are handled now with code)
- Improved code quality and efficiency significantly
- Fixed bugs
- All commands are now under /vd as subcommands
- Adds player name prefix-dependent max view distance, configurable in a new config file
- Major codebase and performance changes (more to come in the next updates)
- Better exception handling
<br/>Overhaul info, commands and permissions in plugin.yml
<br/>Generalise incorrect arguments message
<br/>Update README
- Full Changelog**:
<br/>Update player save data error msg
<br/>Update config.yml instructions
<br/>Update config.yml incorrect-args and consoleorcmdblock-incorrect-args
<br/>Add error messages for incorrect command usage
<br/>Removed redundant code
<br/>**Full Changelog**: https://github.com/Wyzebb/PlayerViewDistanceController/compare/v1.1.0...v1.1.1
Updated to support 1.20.x as well as the existing support for 1.21
Removed /vwd alias and added /setchunks
Uploaded code to Github
Optimised code
Fixed bugs
Full Changelog: https://github.com/Wyzebb/PlayerViewDistanceController/commits/v1.1.0``