Конфигурация сервера

Конфигурация сервера

Наш сервер работает на мощном оборудовании, чтобы обеспечить стабильную производительность даже при большом количестве игроков (за сезон нас посетило более 3500 человек!).

  • Процессор: AMD Ryzen 9 9950X, разогнан до 5.7 ГГц с водяным охлаждением.

  • Оперативная память: 64 ГБ.

  • Хранилище: 1 ТБ NVMe SSD от Samsung.

  • Операционная система: Debian 11.

  • Местоположение: Россия, Москва.

Ядро сервера

Мы используем Purpur — оптимизированное ядро, которое сочетает производительность и ванильное поведение Minecraft. Настройки ядра в этой документации относятся только к миру построек. В мире ферм изменений не проводилось.

Ограничения по мобам

Для обеспечения стабильной работы сервера мы ввели ограничения на количество мобов в каждом чанке:

  • Мирные мобы: до 25.

  • Монстры: до 25.

  • Жители: до 25.

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

Особенности работы с жителями

Жители могут создавать нагрузку на сервер, особенно при их большом количестве. Чтобы минимизировать это, в ядре Purpur используется функция lobotomize, которая "лоботомирует" жителей, если они не могут двигаться (например, застряли в блоках или узких пространствах). Лоботомированный житель теряет профессию (VillagerProfession.NONE), но сохраняет возможность торговли.

Код функции lobotomize:

if (!this.isAlive() || !this.world.isClient) {
    // Lobotomize the villager if it cannot move
    this.setVillagerData(this.getVillagerData().withProfession(VillagerProfession.NONE));
}

Как избежать лоботомии жителей:

  1. Обеспечьте жителям достаточно пространства для передвижения (не менее 2x2 блоков).

  2. Избегайте узких проходов и тесных помещений.

  3. Если житель уже лоботомирован, переместите его в просторное место. Если это не помогает, замените его на нового жителя с той же профессией.

Почему мы используем лоботомию?

Лоботомия снижает нагрузку на сервер, сохраняя возможность использовать жителей без жестких ограничений их количества. Это компромисс между производительностью и свободой игроков.

Конфигурация сервера

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

bukkit.yml

Подробное описание параметров

spawn-limits: # Количество мобов на игрока
  monsters: 20
  animals: 5
  water-animals: 2
  water-ambient: 2
  water-underground-creature: 3
  axolotls: 3
  ambient: 1
ticks-per: # Количество тиков на спавн мобов
  animal-spawns: 400 # 20 сек
  monster-spawns: 10 # 0.5 сек
  water-spawns: 100 # 5 сек
  water-ambient-spawns: 400 # 20 сек
  water-underground-creature-spawns: 400 # 20 сек
  axolotl-spawns: 400 # 20 сек
  ambient-spawns: 400 # 20 сек

spigot.yml

Подробное описание параметров

world-settings:
  default:
    hanging-tick-frequency: 200 # Проверка декоративных сущностей
    arrow-despawn-rate: 300 # 15 сек
    trident-despawn-rate: 1200 # 60 сек
    mob-spawn-range: 3 # Радиус спавна мобов (в чанках)
    entity-activation-range: # Радиус активации сущностей
      animals: 24
      monsters: 24
      raiders: 48
      misc: 8
      water: 8
      villagers: 20
      flying-monsters: 48
    tick-inactive-villagers: false # Инактивные жители не тикают
    entity-tracking-range: # Радиус видимости сущностей
      players: 128
      animals: 48
      monsters: 48
      misc: 32
      other: 64

paper-global.yml

Подробное описание параметров

item-validation:
  book-size:
    page-max: 1280 # Ограничение размера книг (в байтах)
unsupported-settings:
  allow-headless-pistons: true
  allow-permanent-block-break-exploits: true
  allow-piston-duplication: true
  perform-username-validation: true

paper-world-defaults.yml

Подробное описание параметров

chunks:
  auto-save-interval: 6000 # Автосохранение чанков
  delay-chunk-unloads-by: 10s # Задержка выгрузки чанков
  entity-per-chunk-save-limit:
    area_effect_cloud: 8
    arrow: 16
    dragon_fireball: 3
    egg: 8
    ender_pearl: 8
    experience_bottle: 3
    experience_orb: 16
    eye_of_ender: 8
    fireball: 8
    firework_rocket: 8
    llama_spit: 3
    potion: 8
    shulker_bullet: 8
    small_fireball: 8
    snowball: 8
    spectral_arrow: 16
    trident: 16
    wither_skull: 4
  max-auto-save-chunks-per-tick: 8
  prevent-moving-into-unloaded-chunks: true
collisions:
  max-entity-collisions: 4 # Лимит столкновений сущностей
entities:
  behavior:
    pillager-patrols:
      disable: true
  spawning:
    creative-arrow-despawn-rate: 400
    despawn-ranges:
      ambient: { hard: 54, soft: 32 }
      axolotls: { hard: 54, soft: 32 }
      creature: { hard: 54, soft: 32 }
      misc: { hard: 54, soft: 32 }
      monster: { hard: 54, soft: 32 }
      underground_water_creature: { hard: 54, soft: 32 }
      water_ambient: { hard: 54, soft: 32 }
      water_creature: { hard: 54, soft: 32 }
    duplicate-uuid:
      mode: SAFE_REGEN
      safe-regen-delete-range: 32
    iron-golems-can-spawn-in-air: false
    non-player-arrow-despawn-rate: 400
    per-player-mob-spawns: true
fixes:
  disable-unloaded-chunk-enderpearl-exploit: true
  fix-curing-zombie-villager-discount-exploit: true
hopper:
  cooldown-when-full: true
misc:
  redstone-implementation: ALTERNATE_CURRENT
  update-pathfinding-on-block-update: false
spawn:
  keep-spawn-loaded: false # Спавн-чанки не прогружаются 24/7
tick-rates:
  behavior:
    villager:
      validatenearbypoi: -1
  container-update: 1
  grass-spread: 4
  mob-spawner: 2
  sensor:
    villager:
      secondarypoisensor: 40
unsupported-settings:
  fix-invulnerable-end-crystal-exploit: true

pufferfish.yml

Подробное описание параметров

enable-suffocation-optimization: true
enable-async-mob-spawning: true
projectile:
  max-loads-per-tick: 10
  max-loads-per-projectile: 8
dab:
  enabled: true
  start-distance: 12
  max-tick-freq: 20
  activation-dist-mod: 7
  blacklisted-entities:
    - VILLAGER
inactive-goal-selector-throttle: true
misc:
  disable-method-profiler: true
  disable-out-of-order-chat: false
enable-async-entity-tracker: true
enable-async-pathfinding: true

Механика спавна и деспавна мобов

Мы используем ванильную механику спавна мобов с одним изменением: значение Hard Despawn уменьшено с 128 до 54 блоков. Это снижает нагрузку на сервер и улучшает производительность.

Как работает спавн мобов:

  • Красная сфера (24–54 блока от игрока): зона появления мобов.

  • Зеленая сфера (до 24 блоков): безопасная зона, мобы не появляются.

  • Цилиндр (до 32 блоков): мобы активны и взаимодействуют с миром.

  • 32–54 блока: мобы тикают медленнее.

  • За пределами 54 блоков: мобы мгновенно исчезают.

Почему фермы из старых версий работают медленнее?

После обновления до версии 1.19 высота мира изменилась (с Y0–Y265 на Y-64–Y320). Это повлияло на спавн мобов, так как игра теперь проверяет больше блоков для спавна. Фермы, построенные на высоте Y0, стали менее эффективными из-за дополнительных 64 блоков ниже.

Решения проблемы:

  1. Перестройте ферму на высоте Y-64 (самый низкий уровень мира).

  2. Очистите периметр от Y-64 до Y0, оставив только воздух.

  3. Примите, что спавн мобов на многопользовательских серверах менее эффективен из-за механики per-player-mob-spawns.

Рекомендации для ферм:

  • Большой периметр: очищайте все возможные места спавна вокруг фермы.

  • Фермы эндерменов: стройте на Y-64 для максимальной эффективности.

  • Фермы в Нижнем мире: располагайте над крышей Нижнего мира, чтобы минимизировать спавн мобов вне платформы.

Last updated

Was this helpful?