TeaHost
Minecraftminecraftpaperоптимизация5 мин. чтения

Настройка paper.yml и paper-world-defaults.yml

Настройка paper.yml и paper-world-defaults.yml: anti-xray, redstone, mob-spawner-tick-rate, chunk-loading и другие параметры для роста TPS.

Кратко

С версии 1.19 настройки Paper лежат в config/paper-global.yml (весь сервер) и config/paper-world-defaults.yml (миры). Самый заметный прирост TPS дают redstone-implementation: ALTERNATE_CURRENT, tick-rates для спавнеров и сенсоров жителей, max-auto-save-chunks-per-tick 8 и hard despawn 96. Правьте на остановленном сервере и проверяйте эффект через Spark.

Начиная с версии 1.19 Paper разделил свой конфиг на два файла в папке config: глобальные параметры в paper-global.yml и настройки миров в paper-world-defaults.yml. Настройка paper.yml (так по привычке называют оба) — самый глубокий уровень тюнинга Minecraft-сервера: здесь лежат оптимизации редстоуна, спавнеров, загрузки чанков и анти-рентген, которых нет ни в Spigot, ни в Bukkit.

Разберу параметры, которые дают реальный прирост, и те, что чаще ломают игру, чем помогают.

Структура и правила работы

код
/config
  paper-global.yml
  paper-world-defaults.yml
/world
  paper-world.yml
  • paper-global.yml — на весь сервер: сеть, античит, логирование
  • paper-world-defaults.yml — значения по умолчанию для всех миров
  • <мир>/paper-world.yml — переопределение для конкретного мира; значение отсюда всегда побеждает

Все ключи с описаниями и значениями по умолчанию — в справочнике PaperMC: глобальная конфигурация и конфигурация миров.

Файлы правятся на остановленном сервере, отступы — пробелы. После правки нужен полный рестарт: /reload для Paper-конфига не работает.

Если файлов нет, значит у вас Spigot, а не Paper. Про переход на Paper и разницу ядер — статья Paper, Spigot или Purpur, а сама смена ядра описана в разделе про смену версии и ядра.

Что даёт настройка paper.yml по сравнению со Spigot

Три вещи, которых больше нигде нет:

  1. Оптимизация редстоуна — альтернативный алгоритм пересчёта проводов
  2. Раздельный тик спавнеров и деревень — самые тяжёлые механики можно замедлить точечно
  3. Anti-Xray — серверная защита от рентген-текстур без клиентских модов

На сервере выживания с 40 онлайна корректная настройка Paper даёт обычно 3–6 TPS сверх того, что уже выжато из bukkit.yml и spigot.yml.

Оптимизация редстоуна

yaml
misc:
  redstone-implementation: ALTERNATE_CURRENT

Варианты: VANILLA, EIGENCRAFT, ALTERNATE_CURRENT. Последний — самый быстрый и при этом совместимый с ванильным поведением почти во всех схемах. На сервере с фермами и сортировщиками разница видна сразу в профиле.

Ставьте ALTERNATE_CURRENT, если у вас нет специфичных схем, завязанных на порядок обновления блоков. На техническом сервере с точными таймингами лучше VANILLA.

Тикинг спавнеров и мобов

yaml
tick-rates:
  mob-spawner: 2
  container-update: 1
  grass-spread: 4
  sensor:
    villager:
      secondarypoisensor: 40
      nearestbedsensor: 40
      villagerbabiessensor: 40
  behavior:
    villager:
      validatenearbypoi: 60

mob-spawner: 2 вдвое снижает частоту обработки спавнеров. Мобы будут появляться чуть медленнее, но на серверах с десятками фермерских спавнеров это ощутимая экономия.

Сенсоры деревенских жителей — отдельная история. Виллагеры в Minecraft тикают дороже любых других мобов: каждый ищет кровать, рабочее место и точки интереса. Значения 40–60 вместо стандартных 1–20 снижают нагрузку от больших деревень в разы, а игроки замечают только то, что жители чуть медленнее переустраиваются.

Если на сервере есть торговые залы на 50+ жителей, начинайте оптимизацию именно отсюда.

Загрузка и генерация чанков

yaml
chunks:
  auto-save-interval: 6000
  delay-chunk-unloads-by: 10s
  max-auto-save-chunks-per-tick: 8
  prevent-moving-into-unloaded-chunks: true

max-auto-save-chunks-per-tick: 8 вместо 24 растягивает автосохранение: вместо одного заметного подвисания раз в 5 минут получается равномерная фоновая нагрузка. Это лечит характерный «лаг по расписанию», который многие принимают за проблему с диском.

delay-chunk-unloads-by: 10s не даёт чанкам выгружаться и сразу подгружаться обратно, когда игрок ходит туда-сюда по границе.

prevent-moving-into-unloaded-chunks: true — обязательно на сервере с элитрами и быстрым перемещением, иначе игрок улетает в незагруженную область и провоцирует синхронную генерацию.

Anti-Xray

Серверная защита от рентгена. Работает без клиентских модов, но стоит процессорного времени.

yaml
anticheat:
  anti-xray:
    enabled: true
    engine-mode: 2
    max-block-height: 64
    update-radius: 2
    lava-obscures: false
    hidden-blocks:
      - copper_ore
      - deepslate_copper_ore
      - gold_ore
      - deepslate_gold_ore
      - iron_ore
      - deepslate_iron_ore
      - diamond_ore
      - deepslate_diamond_ore
      - emerald_ore
      - lapis_ore
      - redstone_ore
      - ancient_debris

engine-mode: 1 подменяет руду на камень — дешевле по CPU, но обходится опытными читерами. engine-mode: 2 дополнительно раскидывает фальшивую руду — надёжнее, но заметно дороже; на слабом тарифе может стоить 1–2 TPS.

max-block-height: 64 ограничивает работу подземельем, где рентген и применяется. Поднимать до 128 смысла нет.

На сервере с приватной аудиторией и белым списком anti-xray можно выключить целиком — как настраивается whitelist, описано в отдельном разделе.

Коллизии и энтити

yaml
collisions:
  max-entity-collisions: 2
  fix-climbing-bypassing-cramming-rule: true

entities:
  spawning:
    despawn-ranges:
      monster:
        hard: 96
        soft: 32
      creature:
        hard: 96
        soft: 32
    per-player-mob-spawns: true

per-player-mob-spawns: true — включено по умолчанию и менять не надо: лимиты считаются на каждого игрока, а не на весь мир, что честнее распределяет мобов.

despawn-ranges со значением hard: 96 вместо 128 убирает мобов на дальней границе раньше. На сервере с 30+ игроками это заметная экономия энтити.

Полезные мелочи

yaml
hopper:
  cooldown-when-full: true
  disable-move-event: false

unsupported-settings:
  fix-invulnerable-end-crystal-exploit: true

environment:
  optimize-explosions: true
  treasure-maps:
    enabled: true
    find-already-discovered:
      loot-tables: false

optimize-explosions: true кеширует расчёт взрывов — помогает на серверах, где часто взрывают криперы и ТНТ.

cooldown-when-full: true не даёт полной воронке проверять содержимое каждый тик.

treasure-maps — неочевидный источник фризов: поиск структуры для карты сокровищ генерирует чанки синхронно. Если жители у вас торгуют картами массово, этот параметр стоит проверить первым при жалобах на секундные зависания.

paper-global.yml: что смотреть там

yaml
proxies:
  velocity:
    enabled: false
    online-mode: true
    secret: ''

packet-limiter:
  all-packets:
    max-packet-rate: 500.0

misc:
  max-joins-per-tick: 3
  chat-threads:
    chat-executor-core-size: -1

velocity.enabled включается только при работе за прокси — сборка сети описана в статье про BungeeCord и Velocity.

packet-limiter защищает от флуда пакетами и включён по умолчанию. Снижать порог ниже 500 не стоит — начнёте кикать легитимных игроков с плохим соединением.

max-joins-per-tick ограничивает, сколько игроков может зайти за один тик; по умолчанию 5, лишние не кикаются, а заходят в следующих тиках. Если после рестарта у вас регулярно заходят десятки человек сразу, снизьте до 3 или 2 — массовый заход растянется, и сервер не захлебнётся.

Порядок работы

Paper-конфиг — последний шаг, а не первый:

  1. server.properties — дистанции; разбор в разделе про server.properties
  2. bukkit.yml — лимиты спавна; разбор в разделе про bukkit.yml
  3. spigot.yml — активация энтити и merge-radius; разбор в разделе про spigot.yml
  4. Paper-конфиги — редстоун, спавнеры, чанки, anti-xray

Проверять эффект надо профилировщиком, а не на глаз: /spark profiler start --timeout 300 в вечерний пик покажет, какая механика съедает тик. Общая методика — в разделе про оптимизацию сервера.

Чего не стоит делать

  • Копировать чужой конфиг целиком — параметры сильно зависят от того, что происходит на вашем сервере
  • Лезть в unsupported-settings без понимания: там отключение защит от эксплойтов
  • Включать engine-mode: 3 для anti-xray — экспериментальный режим с известными артефактами
  • Менять сразу десять значений: эффект станет неотличим от случайных колебаний TPS

Если конфиг вылизан, а тики всё равно проседают в прайм-тайм, дальше упирается процессор — сравнить варианты можно на странице тарифов.