TeaHost
Minecraftminecraftоптимизацияконфиги5 мин. чтения

Настройка spigot.yml для стабильного TPS

Настройка spigot.yml: entity-activation-range, merge-radius, mob-spawn-range, view-distance и тикинг — параметры, которые реально поднимают TPS.

Кратко

В spigot.yml на TPS сильнее всего влияют entity-activation-range (для выживания animals 16, monsters 24, misc 8 вместо 32/32/16), merge-radius для дропа, mob-spawn-range 6 вместо 8 и hopper-check. Raiders и villagers сильно не режьте — ломаются рейды и торговля. Правьте файл на остановленном сервере и проверяйте эффект через /spark profiler в вечерний пик.

Файл spigot.yml создаётся при первом запуске Spigot, Paper или Purpur и содержит то, чего нет ни в server.properties, ни в bukkit.yml: радиусы активации энтити, объединение дропа, тикинг предметов и десятки мелких переключателей. Настройка spigot.yml — второй по эффективности шаг после лимитов спавна, и на серверах с большим количеством мобов и предметов она даёт больше, чем смена железа.

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

Структура файла spigot.yml и правила настройки

spigot.yml делится на две части:

  • settings: — глобальные настройки сервера
  • world-settings: — настройки миров, где default: применяется ко всем, а блок с именем мира переопределяет их точечно
yaml
world-settings:
  default:
    entity-activation-range:
      animals: 16
  world_nether:
    entity-activation-range:
      animals: 8

Правки делаются на остановленном сервере, отступы — только пробелы. Часть значений подхватывается командой /spigot reload, но полный рестарт надёжнее.

entity-activation-range: главный параметр

Радиус в блоках, внутри которого энтити получают полный тик. За его пределами мобы «замирают»: не двигаются и не считают ИИ, но остаются в мире.

yaml
entity-activation-range:
  animals: 16
  monsters: 24
  raiders: 64
  misc: 8
  water: 8
  villagers: 16
  flying-monsters: 32
  wake-up-inactive:
    animals-max-per-tick: 4
    animals-every: 1200
    animals-for: 100
    monsters-max-per-tick: 8
    monsters-every: 400
    monsters-for: 100

Значения по умолчанию по справочнику PaperMC: animals 32, monsters 32, raiders 64, misc 16, water 16, villagers 32, flying-monsters 32. Для большинства серверов это избыточно. Рабочий набор для выживания:

КатегорияПо умолчаниюДля выживанияКомментарий
animals3212–16Коровы и овцы не должны думать за 32 блока
monsters3220–24Ниже 16 игроки заметят, что мобы «просыпаются» слишком близко
misc164–8Вагонетки, лодки, стойки для брони, дроп
villagers3216Ниже ломается торговля и механики деревень
raiders6464Не трогайте, рейды сломаются

На сервере с большими фермами снижение animals с 32 до 16 обычно даёт 2–4 TPS без единой жалобы от игроков.

merge-radius: объединение дропа

Предметы на земле — вторая по тяжести категория после мобов. Каждый лежащий предмет тикает.

yaml
merge-radius:
  item: 3.5
  exp: 4.0

В актуальных версиях по умолчанию item: 0.5, а exp: -1 (объединение опыта при появлении выключено); в старых конфигах можно встретить 2.5 и 3.0. Поднятие до 3.5–4.0 объединяет дроп в стаки в большем радиусе и заметно снижает количество энтити на дроп-фермах и после массовых ивентов.

Выше 5.0 не ставьте: предметы начнут визуально «прыгать» друг к другу через стены и падать в лаву.

mob-spawn-range

yaml
mob-spawn-range: 6

Радиус в чанках, в котором вокруг игрока пытаются спавниться мобы. По умолчанию 8, безопасно снижается до 6 — мобов вокруг игрока не станет меньше, но сервер перестанет считать спавн в дальних чанках, которые игрок всё равно не увидит.

Работает в связке с spawn-limits из bukkit.yml — их разбор в отдельном разделе.

Тикинг предметов и стрел

yaml
item-despawn-rate: 6000
arrow-despawn-rate: 300
trident-despawn-rate: 1200

item-despawn-rate — сколько тиков предмет лежит на земле до исчезновения. 6000 = 5 минут, стандарт. На серверах с большим онлайном имеет смысл снизить до 3000 (2,5 минуты): мусора на земле станет вдвое меньше. Игроков предупредите заранее, иначе будут жалобы на потерянные вещи.

arrow-despawn-rate: 300 вместо 1200 убирает лес из стрел на PvP-аренах и после ивентов.

view-distance и simulation-distance

yaml
view-distance: default
simulation-distance: default

По умолчанию значения берутся из server.properties, и правильнее менять их там — параметры разобраны в разделе про настройку server.properties и в статье про настройку view-distance.

Смысл переопределять здесь есть только для отдельного мира: например, на арене или в лобби поставить 6, а в основном выживании оставить 10.

yaml
world-settings:
  lobby:
    view-distance: 6
    simulation-distance: 4

hopper и редстоун

yaml
hopper-transfer: 8
hopper-check: 8
hopper-amount: 1

Воронки — классический источник лагов на технических серверах. По умолчанию hopper-transfer: 8, hopper-check: 1. hopper-check: 8 вместо 1 в восемь раз снижает частоту проверок содержимого. Сортировщики при этом работают медленнее, но заметно это только на очень плотных системах.

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

Раздел settings

yaml
settings:
  bungeecord: false
  save-user-cache-on-stop-only: false
  timeout-time: 60
  restart-on-crash: true
  netty-threads: 4
  attribute:
    maxHealth:
      max: 2048.0

bungeecord: true включается только если сервер стоит за прокси. Про сборку сети — в статье про BungeeCord и Velocity. На одиночном сервере это дыра в безопасности: с включённым режимом любой может подключиться под чужим ником.

save-user-cache-on-stop-only: true снижает дисковые операции на серверах с большим числом уникальных игроков.

netty-threads: 4 — сетевые потоки. Поднимать выше числа ядер бессмысленно.

restart-on-crash работает только вместе с настроенным restart-script; надёжнее держать перезапуск снаружи через systemd — как это сделать, описано в статье про автозапуск сервера.

Готовый набор для выживания на 30–50 слотов

yaml
world-settings:
  default:
    mob-spawn-range: 6
    item-despawn-rate: 4000
    arrow-despawn-rate: 300
    merge-radius:
      item: 3.5
      exp: 4.0
    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 64
      misc: 8
      water: 8
      villagers: 16
      flying-monsters: 32
    hopper-check: 4
    max-entity-collisions: 2

max-entity-collisions: 2 вместо 8 — ещё одна недооценённая правка. Она ограничивает, сколько столкновений считается для каждой сущности, и сильно помогает на серверах, где мобов сгоняют в кучу (фермы, загоны, PvP-свалки). На Paper этот параметр задаётся в paper-world-defaults.yml (секция collisions), а max-tick-time из spigot.yml Paper вообще не использует.

Порядок оптимизации

spigot.yml — третий шаг, а не первый:

  1. server.properties — дистанции прорисовки и симуляции
  2. bukkit.yml — лимиты и частота спавна
  3. spigot.yml — радиусы активации, merge-radius, деспавн
  4. paper-world-defaults.yml — тонкая настройка Paper, описана в соседнем разделе

После каждого шага смотрите /tps и профиль через /spark profiler в вечерний пик, а не в пустом мире. Изменения, внесённые пачкой, невозможно оценить.

Полная последовательность действий по производительности — в разделе про оптимизацию сервера и в статье как оптимизировать сервер Minecraft.

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

  • Копировать чужой spigot.yml целиком: конфиг под технический сервер убьёт выживание и наоборот
  • Ставить entity-activation-range ниже 8 — мобы начнут «оживать» прямо перед лицом игрока
  • Отключать warn-on-overload в bukkit.yml, чтобы не видеть предупреждений: проблема не исчезнет
  • Менять max-tick-time в надежде убрать лаги — это не ускорение, а обрезание тика, которое ломает механики

Если после всех правок TPS в пике всё равно ниже 18, вы упёрлись в процессор — что именно смотреть при выборе, описано в статье про процессор для игрового сервера, а готовые конфигурации есть на странице тарифов.