TeaHost
Minecraftminecraftоптимизациямобыbukkit.yml5 мин. чтения

Лимит мобов на сервере: настройка спавна в Minecraft

Лимит мобов на сервере Minecraft: настройка spawn-limits в bukkit.yml, per-player-mob-spawns в Paper и despawn-ranges без ущерба геймплею

Кратко

Лимиты мобов задаются в bukkit.yml (spawn-limits, ticks-per), а в Paper их дополняют per-player-mob-spawns и despawn-ranges. Для выживания на 30–50 игроков рабочая связка — monsters около 30–35, ambient 1, ticks-per.monster-spawns 4, mob-spawn-range 6 в spigot.yml и hard despawn 96. Проверяйте эффект через /spark tps под реальным онлайном.

Лимит мобов на сервере — первое, что стоит трогать, когда TPS проседает вечером, а профайлер показывает жирный кусок времени в EntityLiving.tick. Мобы плодятся вокруг каждого игрока, каждый тик считают путь до цели, проверяют освещённость и коллизии. На двадцати онлайн это уже несколько тысяч сущностей, и никакие Aikar's flags тут не спасут — нужно резать спавн.

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

Как ванилла считает мобов

Механика простая: игра берёт зону вокруг игрока (по умолчанию 128 блоков, ограничена view-distance и simulation-distance), считает существующих мобов нужной категории и, если их меньше кэпа, пытается заспавнить новых в случайных точках загруженных чанков.

Категорий несколько, и путать их не надо:

КатегорияКто этоДефолтный кэп
monstersЗомби, скелеты, криперы, пауки — основной пожиратель тиков70
animalsКоровы, овцы, свиньи — спавнятся редко, но накапливаются при разведении10
water-animalsКальмары и дельфины5
water-ambientРыба, которой в океанах генерируется очень много20
water-underground-creatureСветящиеся кальмары5
axolotlsАксолотли5
ambientЛетучие мыши15

Ключевой момент: в чистом Bukkit/Spigot кэп общий на мир (масштабируется по числу загруженных чанков). Один игрок в аду с фермой мобов может выбрать весь monsters-лимит, и на остальных мобы просто перестанут появляться. В Paper это лечится отдельной опцией, о ней ниже.

Лимит мобов на сервере в bukkit.yml

Основные значения лежат в bukkit.yml в корне сервера:

yaml
spawn-limits:
  monsters: 70
  animals: 10
  water-animals: 5
  water-ambient: 20
  water-underground-creature: 5
  axolotls: 5
  ambient: 15
ticks-per:
  animal-spawns: 400
  monster-spawns: 1
  water-spawns: 1
  water-ambient-spawns: 1
  water-underground-creature-spawns: 1
  ambient-spawns: 1

Это дефолты — те же значения приводит справочник PaperMC по bukkit.yml. Для выживалки на 30–50 человек я обычно ставлю так:

yaml
spawn-limits:
  monsters: 35
  animals: 8
  water-animals: 5
  water-ambient: 3
  water-underground-creature: 2
  axolotls: 2
  ambient: 1
ticks-per:
  monster-spawns: 4
  animal-spawns: 800
  water-ambient-spawns: 200
  ambient-spawns: 400

Пояснение к ticks-per: это интервал между попытками спавна в тиках. monster-spawns: 1 означает попытку каждый тик, то есть 20 раз в секунду. Подняв до 4, вы уменьшаете нагрузку на алгоритм спавна вчетверо, а игрок разницы почти не заметит — мобы всё равно упрутся в кэп, просто чуть медленнее.

Ambient и water-ambient режьте смело. Летучие мыши и рыба не влияют ни на прогресс, ни на фарм, а в океанских мирах рыба создаёт заметный фон нагрузки.

Больше про остальные секции файла — в разборе bukkit.yml.

Per-player mob spawns в Paper

Если сервер на Paper 1.21 (а он должен быть на Paper — ставится ядро за пять минут), в paper-world-defaults.yml есть опция, которая меняет саму логику:

yaml
entities:
  spawning:
    per-player-mob-spawns: true

С ней кэп применяется к каждому игроку отдельно, а не к миру целиком. Практический эффект: можно опустить monsters до 25–30 и при этом у каждого игрока рядом будет нормальное количество мобов, а суммарное число сущностей на сервере вырастет линейно от онлайна, а не хаотично.

Включено по умолчанию в свежих сборках Paper, но проверить стоит — на старых конфигах, перетащенных с 1.16, значение бывает false.

Дальность деспавна

Второй рычаг — despawn-ranges. Он определяет, на каком расстоянии моб исчезает:

yaml
entities:
  spawning:
    despawn-ranges:
      monster:
        soft: 28
        hard: 96
      creature:
        soft: 28
        hard: 96
      ambient:
        soft: 16
        hard: 32

Дефолт — 32 и 128. Soft означает, что дальше этого расстояния моб может исчезнуть случайно; hard — исчезает гарантированно. Снижение hard до 96 убирает мобов, которые висят на границе прогрузки и никому не нужны. Ниже 64 опускать не советую: игроки начнут жаловаться, что скелет, за которым они бежали, растворился в воздухе.

Mob-spawn-range и entity-activation-range

В spigot.yml есть ещё два параметра, которые работают в связке с лимитами:

yaml
world-settings:
  default:
    mob-spawn-range: 6
    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 48
      misc: 8

mob-spawn-range (в чанках) сужает зону, где вообще пытаются появиться мобы. Дефолт 8, а у entity-activation-range по умолчанию animals и monsters — 32, raiders — 64, misc — 16 (справочник spigot.yml). Значение 6 для mob-spawn-range заметно снижает количество бесполезного спавна за пределами видимости.

entity-activation-range — радиус, за которым сущность перестаёт тикать полноценно. Мобы не исчезают, но перестают искать путь и двигаться. Снижение monsters до 24 экономит много, но осторожно: слишком маленькие значения ломают фермы, где мобы должны падать в воронку. Если на сервере есть техноблок с автофермами, не опускайте monsters ниже 24, а misc ниже 8.

Как понять, что лимиты уже нормальные

Не подбирайте вслепую. Поставьте Spark и посмотрите реальную картину — как читать его отчёты, разобрано отдельно. В консоли:

код
/spark tps
/spark profiler start --timeout 60

Если в отчёте ServerLevel.tickNonPassenger занимает больше 25–30% времени тика, а рядом видно Mob.aiStep — лимиты режем дальше. Если после правок эта доля упала до 10–15%, а TPS держится 19.8+, дальше можно не крутить.

Быстрая проверка количества сущностей без плагинов:

код
/execute if entity @e[type=minecraft:item]

Команда ничего не меняет в мире, а в ответе покажет число подходящих сущностей. Для мобов подставьте нужный тип, например minecraft:zombie.

Частые вопросы

Почему мобы вообще перестали спавниться?

Три типичные причины. Первая — запрет спавна монстров: в старых версиях это spawn-monsters=false в server.properties, в новых — соответствующее игровое правило (проверьте список через /gamerule). Вторая — сложность выставлена в peaceful. Третья — кто-то поставил ClearLagg с агрессивным автоочистителем, и мобы вычищаются раньше, чем игрок до них добежит.

Стоит ли ставить плагин-очиститель вместо лимитов?

Плагины вроде ClearLagg решают следствие: они убивают уже созданные сущности каждые несколько минут. Сервер всё это время всё равно их обсчитывает, плюс скачки лага в момент чистки. Лимиты работают на входе, поэтому правильный порядок — сначала конфиги, а очиститель только для дропа предметов.

Влияет ли view-distance на количество мобов?

Прямо — да. Мобы спавнятся только в загруженных чанках, поэтому снижение view-distance с 10 до 7 автоматически уменьшает и общее число мобов. Если у вас ещё не тронут этот параметр, начните с него: эффект больше, чем от любых spawn-limits.

Итог

Рабочая связка выглядит так: per-player-mob-spawns: true, monsters в районе 30, ambient и water-ambient почти в ноль, ticks-per.monster-spawns: 4, mob-spawn-range: 6 и hard despawn 96. После каждого изменения перезапускайте сервер и смотрите TPS хотя бы полчаса под реальным онлайном — сразу после рестарта картина всегда красивее реальной.

Остальные шаги по разгону есть в общем гайде по оптимизации. А если крутить конфиги надоело и проще взять машину, где ресурсов хватает с запасом, — тарифы под Minecraft тут.