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

Настройка bukkit.yml на сервере Minecraft

Настройка bukkit.yml: лимиты спавна мобов, spawn-limits и ticks-per, autosave, warn-on-overload и chunk-gc — что реально влияет на TPS сервера.

Кратко

В bukkit.yml на TPS сильнее всего влияют spawn-limits и ticks-per: для выживания на 20–40 игроков ставьте monsters 40–50 вместо 70, animals 8, ambient 1 и monster-spawns 2. Автосохранение (ticks-per.autosave, 6000 тиков) на Paper лучше не трогать, connection-throttle снижайте до 1000–2000, если игроки заходят с одного IP. Правьте файл на остановленном сервере.

Файл bukkit.yml появляется в корне сервера после первого запуска любого ядра на базе Bukkit — Spigot, Paper, Purpur. Настройка bukkit.yml — первое, куда стоит заглянуть, когда TPS проседает при живом онлайне: здесь лежат лимиты спавна мобов и частота их появления, а мобы почти всегда занимают верхнюю строчку в профилировании.

Разберу параметры по разделам: что делает, какие значения ставить, где легко испортить игру.

Где лежит и как редактировать

Путь: корень сервера, рядом с server.properties и spigot.yml.

Правила работы с файлом:

  • Редактировать только на остановленном сервере — при выходе он перезаписывается из памяти
  • Отступы строго пробелами, табуляция ломает YAML
  • После правки — полный рестарт, не /reload
  • Перед изменениями скопируйте файл: одна ошибка в отступе, и сервер не стартует

Открыть можно через файловый менеджер панели или по SFTP — порядок подключения в инструкции по SFTP.

Что даёт настройка bukkit.yml в цифрах

Основная нагрузка на сервере выживания распределяется примерно так: мобы 30–50% времени тика, редстоун и энтити игроков 10–20%, генерация чанков — всплесками. Настройка bukkit.yml бьёт ровно по первому пункту.

На тестовом сервере с 25 игроками снижение monsters с 70 до 35 обычно даёт +3–5 TPS в вечерний пик и почти не влияет на игровой процесс: мобов всё равно больше, чем нужно для фермы среднего размера.

Раздел spawn-limits

Ключевой блок. Числа — мобкап каждой категории. В ванильной механике он масштабируется по числу загруженных чанков вокруг игроков, а в Paper с включённым по умолчанию per-player-mob-spawns считается на каждого игрока. Paper также позволяет переопределить эти значения в своём конфиге мира — подробно в справочнике PaperMC по bukkit.yml.

yaml
spawn-limits:
  monsters: 50
  animals: 8
  water-animals: 3
  water-ambient: 10
  water-underground-creature: 3
  axolotls: 3
  ambient: 1

Значения по умолчанию: monsters 70, animals 10, water-animals 5, water-ambient 20, water-underground-creature 5, axolotls 5, ambient 15.

Рекомендации по типу сервера:

Тип сервераmonstersОстальное
Выживание, 20–40 онлайна40–50animals 8, water-animals 3, ambient 1
Мини-игры и PvP15–20По минимуму — мобы там не нужны
Технический сервер с фермами60–70Иначе фермы просядут; про такой профиль — технический сервер
Небольшой сервер на 2 ГБ25–30animals 6–8, ambient 1

Опускать monsters ниже 20 на выживании не стоит: игроки начнут жаловаться, что ночью пусто и мобы не спавнятся в фермах.

Раздел ticks-per

Как часто сервер пытается заспавнить каждую категорию. Значение в тиках, 20 тиков = 1 секунда.

yaml
ticks-per:
  animal-spawns: 400
  monster-spawns: 2
  water-spawns: 400
  water-ambient-spawns: 400
  water-underground-creature-spawns: 400
  axolotl-spawns: 400
  ambient-spawns: 400
  autosave: 6000

monster-spawns: 2 вместо 1 снижает частоту попыток спавна вдвое. Заметного влияния на геймплей нет, а нагрузка падает. Ставить выше 4 не советую — мобы начнут появляться рывками.

animal-spawns: 400 (20 секунд) — значение по умолчанию, менять его обычно не нужно. У остальных категорий по умолчанию 1, то есть попытка каждый тик. Если животные не нужны совсем, поднимайте до 1200.

autosave: главный неочевидный параметр

autosave в разделе ticks-per задаёт интервал автосохранения мира. По умолчанию 6000 тиков — раз в 5 минут.

На больших мирах и слабых дисках именно автосейв даёт периодические подвисания: раз в несколько минут TPS падает на секунду-другую, и игроки видят «лаг по расписанию».

Что делать:

  • На Paper этот параметр лучше не трогать, а управлять сохранением через paper-world-defaults.yml — там есть постепенное сохранение чанков; параметры описаны в разделе про настройку paper.yml
  • На чистом Spigot можно поднять до 12000 (10 минут), но тогда при внезапном падении теряется больше прогресса
  • Отключать полностью (значение -1) не стоит — при краше потеряете всё с последнего ручного сохранения

Регулярные бэкапы это не отменяет; схема настройки описана в статье про бэкапы игрового сервера.

Раздел settings

yaml
settings:
  allow-end: true
  warn-on-overload: true
  permissions-file: permissions.yml
  update-folder: update
  plugin-profiling: false
  connection-throttle: 4000
  query-plugins: true
  deprecated-verbose: default
  shutdown-message: Сервер перезагружается, зайдите через минуту

Что стоит поменять:

connection-throttle — минимальный интервал между подключениями с одного IP в миллисекундах. По умолчанию 4000. Если у вас играют несколько человек с одного адреса (одна квартира, интернет-кафе), поставьте 1000. При атаке спамом соединений можно поднять до 10000.

warn-on-overload — сообщения «Can't keep up! Is the server overloaded?» в консоли. Выключать не надо: это ваш индикатор проблем. Разбор причин таких сообщений — в статье сервер Minecraft лагает.

shutdown-message — что видят игроки при остановке. Мелочь, но нормальный текст вместо «Server closed» выглядит аккуратнее.

update-folder — папка, из которой плагины подхватываются при рестарте. Кладёте новый .jar в plugins/update, сервер сам заменит старый при следующем старте. Удобно для обновления без остановки.

allow-end — отключение Края целиком. Ставьте false, только если действительно не хотите этого измерения: игроки будут спрашивать.

Раздел chunk-gc

yaml
chunk-gc:
  period-in-ticks: 600
  load-threshold: 0

В Spigot этот блок задаёт, как часто сервер выгружает неиспользуемые чанки; 600 тиков (30 секунд) — рабочее значение. В Paper выгрузкой чанков управляет собственная система, а period-in-ticks влияет только на чанки, загруженные плагинами, и ограничен 20 тиками. На Paper блок можно не трогать. В актуальных версиях параметра load-threshold может не быть вовсе.

Раздел database

yaml
database:
  username: bukkit
  isolation: SERIALIZABLE
  driver: org.sqlite.JDBC
  password: walrus
  url: jdbc:sqlite:{DIR}{NAME}.db

Устаревшая встроенная база Bukkit, в свежих версиях ядра этого блока может не быть. Современные плагины ей не пользуются — работают со своим SQLite или MySQL. Трогать этот блок не нужно.

Полный рабочий пример для выживания на 30 слотов

yaml
settings:
  allow-end: true
  warn-on-overload: true
  permissions-file: permissions.yml
  update-folder: update
  plugin-profiling: false
  connection-throttle: 2000
  query-plugins: true
  deprecated-verbose: default
  shutdown-message: Рестарт сервера, заходите через минуту

spawn-limits:
  monsters: 45
  animals: 8
  water-animals: 3
  water-ambient: 5
  water-underground-creature: 3
  axolotls: 3
  ambient: 1

chunk-gc:
  period-in-ticks: 600
  load-threshold: 0

ticks-per:
  animal-spawns: 400
  monster-spawns: 2
  water-spawns: 400
  water-ambient-spawns: 600
  water-underground-creature-spawns: 400
  axolotl-spawns: 400
  ambient-spawns: 600
  autosave: 6000

Порядок правильной оптимизации

bukkit.yml — один из трёх файлов, и работать с ними нужно по очереди, а не менять всё сразу:

  1. server.properties — дистанции прорисовки и симуляции; разбор в отдельном разделе
  2. bukkit.yml — лимиты и частота спавна (этот материал)
  3. spigot.yml и paper-world-defaults.yml — merge-radius, activation-range, тик энтити; описаны в статьях про spigot.yml и paper.yml

После каждого шага смотрите /tps и /spark tps в течение вечернего пика. Меняете всё сразу — не поймёте, что дало эффект и что сломало игру.

Общая последовательность действий по производительности собрана в разделе про оптимизацию сервера.

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