▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/ViewDistanceTweaks
ViewDistanceTweaks

ViewDistanceTweaks

Dynamic view & simulation distance adjustment per world — automatic, MSPT-aware, and fully configurable in a single config.yml.

Оцените первым
649
4

ViewDistanceTweaks

Your server. Your performance.

Dynamic view distance and simulation distance adjustment per world — lightweight, fully configurable, and built for performance-critical servers. >


✨ Features

FeatureDescription
Dynamic Sim & View DistanceAutomatically adjusts per world based on server load.
3 Adjustment ModesProactive, reactive, or mixed — your choice.
MSPT-based PredictionLinear regression model prevents bad increases before they happen.
Per-world ConfigurationEach world has its own min/max, weight, and exclusion settings.
Temporary OverridesLock distances for a set duration via command.
PlaceholderAPI Support20+ placeholders for scoreboards, tab lists and more.
In-game AnnouncementsNotify staff on distance changes with a configurable format.
/vdt Command SuiteStatus, reload, enable/disable, manual override — all in one command.

📦 Dependencies

  • Paper 1.21.x / 26.xrequired — papermc.io
  • PlaceholderAPIoptionalModrinth

🔧 How It Works

The plugin measures your server's MSPT (milliseconds per tick) every tick and uses it — along with the total number of player-loaded chunks — to decide whether simulation and view distances should be increased, kept, or reduced.

Proactive mode targets a configured maximum chunk count and mathematically calculates the ideal distance. Reactive mode reacts to MSPT crossing configurable thresholds. Mixed mode combines both and always prioritizes reducing distance when the server is under load.

A built-in linear regression model tracks historical MSPT vs. chunk-count pairs and blocks increases when it predicts the server would exceed the decrease threshold — preventing the classic increase → lag → decrease loop.


⚙️ Configuration

# ============================================================
#   ViewDistanceTweaks — LucasTHCR Edition
# ============================================================

version: 1

# Set to true once you have configured the plugin.
enabled: false

# Adjustment mode:
#   proactive — adjusts based on chunk count targets
#   reactive  — adjusts based on MSPT thresholds
#   mixed     — combines both; prioritizes reducing distance under load (recommended)
adjustment-mode: mixed

# Ticks to wait after startup before the first check runs.
# 2400 = 2 minutes — lets the server stabilize after a restart.
start-delay: 2400

# How often to run a check (in ticks). 600 = every 30 seconds.
ticks-per-check: 600

# How many consecutive checks must confirm an increase before it is applied.
# Higher = more conservative. Recommended: 8–15.
passed-checks-for-increase: 10

# How many consecutive checks must confirm a decrease before it is applied.
# 1 = immediate reaction to overload (recommended).
passed-checks-for-decrease: 1

# Log a console message whenever distances change.
log-changes: true

# Send an in-game message to players with the viewdistancetweaks.notify permission.
announce-changes-in-chat: false

# Format of the announce message. Supports & color codes.
# Placeholders: {world}, {oldSim}, {newSim}, {oldView}, {newView}
announce-format: "&7[VDT] &f{world}: Sim &e{oldSim}&7→&a{newSim} &f| View &e{oldView}&7→&a{newView}"

# ============================================================
#   PROACTIVE MODE
# ============================================================
proactive-mode-settings:

  # Maximum total ticking chunks across all worlds.
  # Formula: (2*sim+1)^2 * players
  # Example: 20 players at sim 8 → (17)^2 * 20 = 5780
  global-ticking-chunk-count-target: 5780

  # Maximum total non-ticking chunks (view distance beyond sim distance).
  # Formula: ((2*view+1)^2 - (2*sim+1)^2) * players
  # Example: 20 players, view 12, sim 8 → (625 - 289) * 20 = 6720
  global-non-ticking-chunk-count-target: 6720

# ============================================================
#   REACTIVE MODE
# ============================================================
reactive-mode-settings:

  # Below this MSPT, consider increasing distances.
  increase-mspt-threshold: 40.0

  # Above this MSPT, consider decreasing distances.
  # A full tick takes 50ms. Above ~47ms players start noticing lag.
  decrease-mspt-threshold: 47.0

  mspt-tracker-settings:

    # How many ticks of data to average for MSPT calculation.
    # 1200 = 1 minute. Higher = more stable but slower to react.
    collection-period: 1200

    mspt-prediction:
      # Use historical MSPT/chunk data to block increases that would cause lag.
      enabled: true

      # How many minutes of history to keep for the prediction model.
      history-length: 30

      # Minimum data points before the prediction model activates.
      # Prevents bad decisions right after a server restart.
      min-samples: 5

# ============================================================
#   WORLD SETTINGS
# ============================================================
# Worlds not listed here inherit the 'default' settings.
# Use the exact world folder name as the key.

world-settings:

  default:
    simulation-distance:
      exclude: false
      min-simulation-distance: 4
      max-simulation-distance: 12

    view-distance:
      exclude: false
      min-view-distance: 6
      max-view-distance: 16

    # How much weight this world's chunks have in global calculations.
    # 0.5 = half weight (e.g. The End with many empty chunks).
    # 0.0 = excluded from global chunk budget entirely.
    chunk-weight: 1.0

    chunk-counter-settings:
      # Count overlapping chunks from nearby players only once.
      exclude-overlap: true

    # Never reduce distances below the number of players currently in this world.
    never-reduce-below-players: false

    # Give this world 50% more chunk budget in proactive calculations.
    # Useful for the main overworld on multi-world servers.
    priority-world: false

  # Example — Nether
  # world_nether:
  #   simulation-distance:
  #     min-simulation-distance: 4
  #     max-simulation-distance: 8
  #   view-distance:
  #     min-view-distance: 4
  #     max-view-distance: 10
  #   chunk-weight: 0.8

  # Example — The End (many empty chunks → lower weight)
  # world_the_end:
  #   simulation-distance:
  #     min-simulation-distance: 4
  #     max-simulation-distance: 10
  #   view-distance:
  #     min-view-distance: 6
  #     max-view-distance: 14
  #   chunk-weight: 0.5

  # Example — Main world with priority
  # world:
  #   simulation-distance:
  #     min-simulation-distance: 6
  #     max-simulation-distance: 12
  #   view-distance:
  #     min-view-distance: 8
  #     max-view-distance: 16
  #   chunk-weight: 1.0
  #   priority-world: true

🔑 Commands

CommandPermissionDefault
/vdt reloadviewdistancetweaks.vdt.command.reloadOP
/vdt status [--weight]viewdistancetweaks.vdt.command.statusOP
/vdt simulationdistance <value> [world] [--duration <min>]viewdistancetweaks.vdt.command.simulationdistanceOP
/vdt viewdistance <value> [world] [--duration <min>]viewdistancetweaks.vdt.command.viewdistanceOP
/vdt enableviewdistancetweaks.vdt.command.reloadOP
/vdt disableviewdistancetweaks.vdt.command.reloadOP
/vdt msptviewdistancetweaks.command.vdtOP
viewdistancetweaks.notifyOP — receives announce messages

📋 Placeholders

Requires PlaceholderAPI to be installed.

PlaceholderDescription
%viewdistancetweaks_mspt%Current average MSPT
%viewdistancetweaks_tps%Current TPS
%viewdistancetweaks_mspt_color%&a / &e / &c based on MSPT
%viewdistancetweaks_tps_color%&a / &e / &c based on TPS
%viewdistancetweaks_mode%Active adjustment mode
%viewdistancetweaks_enabled%true or false
%viewdistancetweaks_sim_distance%Simulation distance (first world)
%viewdistancetweaks_sim_distance_<world>%Simulation distance of a specific world
%viewdistancetweaks_view_distance_<world>%View distance of a specific world
%viewdistancetweaks_min_sim_distance_<world>%Configured minimum sim distance
%viewdistancetweaks_max_sim_distance_<world>%Configured maximum sim distance
%viewdistancetweaks_min_view_distance_<world>%Configured minimum view distance
%viewdistancetweaks_max_view_distance_<world>%Configured maximum view distance
%viewdistancetweaks_chunk_count%Total chunks loaded globally
%viewdistancetweaks_chunk_count_<world>%Chunks loaded in a specific world
%viewdistancetweaks_ticking_chunk_count%Total ticking chunks globally
%viewdistancetweaks_ticking_chunk_count_<world>%Ticking chunks in a specific world
%viewdistancetweaks_nonticking_chunk_count%Total non-ticking chunks globally
%viewdistancetweaks_nonticking_chunk_count_<world>%Non-ticking chunks in a specific world
%viewdistancetweaks_chunk_weight_<world>%Configured chunk weight of a world

👥 Credits

LucasTHCRCreator & maintainer

Discord: dc.gg/paperstream

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

26.2.x26.1.x1.21.x

Платформы

Поддерживаемые окружения

Сервер

Ссылки

Создатели

Детали

Лицензия:
Опубликован:1 месяц назад
Обновлён:5 дней назад
Главная