Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Tags
Creators
Details
PlayerViewDistance
Give every player their own server-side view distance without making the entire server pay for the largest setting.
PlayerViewDistance (PVD) is a dedicated-server mod and plugin for Fabric, Forge, NeoForge, Paper, and Folia. It controls chunk loading and sending per player, merges nearby coverage exactly, and keeps expensive planning away from the main server thread.
Why use PVD?
- Per-player distances: uses each player's client request or a persistent operator override.
- Less unnecessary loading: beyond the simulation floor, a player capped at distance 2 does not make PVD load distance 8 solely for them.
- Off-thread planning: geometry, overlap calculations, prioritisation, and governor decisions run on one coalescing planner thread.
- Safe simulation behavior: PVD does not change simulation distance, entity ticking, redstone, random ticks, or another mod's tickets.
- Adaptive and composable: server-performance mods may lower the active distance, but cannot raise it above PVD's ceiling.
- Server-only: vanilla clients can connect normally.
Performance impact
On a server capped at view distance 12 with simulation distance 4, a player requesting distance 4 contributes no PVD loading beyond the simulation floor, while another player who wants distance 12 can still use it. If many players choose less than the server maximum, the server avoids doing maximum-distance chunk work around every one of them.
During movement, especially through fresh terrain, that means fewer chunk-holder promotions, generation jobs, disk reads, chunk serializations, and network sends. Reducing that chunk-system work can lower overall MSPT and leave more tick headroom for entities, redstone, and other mods. The exact improvement depends on simulation distance, pregeneration, player overlap, foreign chunk tickets, and whether chunk processing is the server's current bottleneck.
Supported platforms
| Platform | Minecraft versions | Java |
|---|---|---|
| Fabric | 1.21.11 | 21 |
| Fabric | 26.1, 26.1.1, 26.1.2, 26.2 | 25 |
| Forge | 1.21.11 | 21 |
| Forge | 26.1, 26.1.1, 26.1.2, 26.2 | 25 |
| NeoForge | 1.21.11 | 21 |
| NeoForge | 26.1, 26.1.1, 26.1.2, 26.2 | 25 |
| Paper / Folia | 1.21.11 | 21 |
| Paper / Folia | available 26.1.x and 26.2 builds | 25 |
Fabric requires Fabric Loader 0.19.3 and the matching Fabric API. Fabric, Forge, and NeoForge builds belong in the server's mods directory. The Paper/Folia build belongs in plugins.
How the distance is chosen
PVD calculates a ceiling for each player:
PVD ceiling = min(world/server cap,
configured maximum,
max(configured minimum, persistent override or client request))
actual distance = min(PVD ceiling, every lower platform or provider limit)
Lower limits from the server, the adaptive governor, or another compatible mod remain respected.
For example, /pvd set Steve 6 stores a distance of 6 against Steve's UUID. Changing Steve's client view distance will not replace it. /pvd reset Steve removes the override and returns Steve to their current client-requested distance. Overrides survive reconnects and server restarts.
Commands
Commands require game-master permission on mod loaders or playerviewdistance.admin on Paper/Folia.
/pvd set <player> <2..32>
/pvd reset <player>
/pvd status
/pvd list
/pvd reload
/pvd list reports the average and the ten highest active player distances, keeping output manageable on large servers.
Compatibility
PVD includes dedicated integration for:
- C2ME and C2ME No Tick View Distance
- VMP (Very Many Players)
- Moonrise
Compatibility coverage also includes ServerCore, Lithium, FerriteCore, ModernFix, Alternate Current, ScalableLux, Krypton, Let Me Despawn, Chunky, spark, common chunk loaders, and representative server modpacks where those projects are available.
PVD preserves forced, spawn, portal, simulation, and third-party chunk tickets. On Paper/Folia and Moonrise it uses the native per-player loader instead of creating plugin chunk tickets.
Configuration
Mod-loader configuration is stored in config/. Paper and Folia use plugins/PlayerViewDistance/.
{
"schemaVersion": 2,
"minViewDistance": 2,
"maxViewDistance": 32,
"governorProfile": "BALANCED",
"telemetryIntervalSeconds": 60
}
Configuration reloads are transactional: invalid files remain untouched and the last valid configuration stays active. UUID overrides are saved atomically in playerviewdistance-overrides.json.

