1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Настройка сервера и оптимизация от А до Я.

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем iForgotPassword, 21 мар 2022.

?

Полезная статья?

  1. Да

  2. Нет

Результаты будут видны только после голосования.
  1. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Привет всем! У меня есть статья Создание сервера с нуля от А до Я. Там есть пункт про оптимизацию, но дан он совсем коротко. Тема большая, поэтому разбираю ее отдельно и подробно.

    Часть материала - вольный перевод зарубежных статей, ссылки на оригиналы прилагаю.

    Статья не влезает в один пост, поэтому разбита на части. Части 2 и далее лежат в комментариях этой темы.
    Часть 1 (этот пост) - Выбор ядра и версии
    Часть 2 - Java, запуск и подготовка мира (тык)
    Часть 3 - Сеть и чанки (тык)
    Часть 4 - Мобы (тык)
    Часть 5 - Предметы, редстоун и мелочи (тык)
    Часть 6 - Общие настройки и настройки по мирам (тык)
    Часть 7 - Anti-Xray (тык)
    Часть 8 - Чем мерить лаги и чего не делать (тык)

    minecraft-optimization - основа этой статьи, живой репозиторий, который обновляют под каждую версию
    Документация Paper - справочники по всем конфигам
    Блог-пост me4502 о проблемах команды /reload
    Настройка Anti-Xray - официальное руководство, выросшее из рекомендаций stonar96
    Minecraft exploits and how to fix them - разбор дыр, которые роняют сервер

    Сущность (entity) - все динамические и движущиеся объекты в мире. Мобы, игроки, выпавшие предметы, падающий песок и гравий.
    Тик - один шаг игровой логики. В одной секунде их 20.
    tps (tick per second) - сколько тиков сервер успевает за секунду. Норма 20, ниже - лаги.
    mspt (milliseconds per tick) - сколько миллисекунд ушло на один тик. Пока значение ниже 50, сервер успевает.
    Чанк - кусок мира 16 на 16 блоков по всей высоте. Сервер грузит, считает и сохраняет мир именно чанками.

    Часть 1. Выбор ядра и версии

    Сразу предупрежу. Руководства, которое даст идеальный результат, не существует. У каждого сервера свои задачи и свой предел того, чем Вы готовы пожертвовать ради производительности. Я объясняю, какой параметр на что влияет и что именно он меняет, а подгонять значения под себя Вы будете сами.

    Версия

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

    • 26.1 "Tiny Takeover" - 24 марта 2026. Первый релиз в новом формате, первый полностью деобфусцированный и первый, которому нужна Java 25.
    • 26.2 "Chaos Cubed" - 16 июня 2026. Текущий релиз, на него и ориентируемся.
    • 26.3 - в снапшотах с июня, релиз ориентировочно к концу 2026.
    Снапшоты тоже переименовали. Вместо 25w41a теперь 26.3-snapshot-9.

    Данные bStats на 31 августа 2026, выборка примерно 184 000 серверов.

    26.2 ~ 57.100 серверов (31%)
    1.21.11 ~ 51.200 (28%)
    26.1.2 ~ 20.600 (11%)
    1.21.4 ~ 7.900
    1.21.10 ~ 6.900
    1.21.8 ~ 6.700
    1.21.1 ~ 5.400
    1.20.1 ~ 4.700
    1.8.8 ~ 4.300
    1.12.2 ~ 3.400

    Если сложить по веткам, выходит 26.x около 43%, 1.21.x около 45%, а весь легаси (1.8.8 плюс 1.12.2) примерно 4%. Разговоры про то, что все поголовно сидят на 1.12.2, статистикой давно не подтверждаются.

    Теперь важное, и это касается темы статьи напрямую.

    ВАЖНО! Paper поддерживает только 26.2 и 26.1.2. Ветка 1.21.11 переведена в статус неподдерживаемой, и заплатки на эксплойты туда больше не приезжают. Оптимизировать сервер, который в любой момент положат известной дырой, занятие так себе, поэтому первым делом обновляемся.

    А что делать, если игроки сидят на старых клиентах? Ставить последнюю версию и добавлять ViaVersion с ViaBackwards. Это честнее, чем сознательно закапываться в мертвую версию.

    Ядро

    Выбор ядра влияет на производительность сильнее, чем половина параметров из этой статьи. Живых вариантов сейчас хватает, но есть и такие, от которых лучше держаться подальше.

    Что я рекомендую:

    Paper - дефолт без вариантов. Самое популярное ядро, на нем форкаются почти все остальные. Чинит несоответствия ванильных механик, документация у него разложена по полочкам, а профилировщик spark идет прямо в комплекте. Не знаете, что выбрать - берите его. Дальше по статье я исхожу из того, что у Вас именно Paper.

    Purpur - это Paper плюс несколько сотен геймплейных настроек. Поведение мобов, гравитация, рецепты, фантомы и прочее в том же духе. Ставится вместо Paper без переделок, плагины не ломает. Имеет смысл, если Вы реально будете крутить эти ручки, а не поставите ради галочки.

    Leaf - главное новое имя за последние пару лет. Форк Paper, который собирает оптимизации из Pufferfish, Purpur, Luminol, Moonrise и Plazma в одну сборку и добавляет свои. Многопоточности в стиле Folia тут нет, модель обычная, поэтому плагины работают почти все. Оговорка тут одна. Проект молодой, и между минорными релизами совместимость иногда ломается. Для домашнего сервера и небольшого SMP отлично, на боевой проект с живыми деньгами - на свой риск.

    Те же данные bStats на 31 августа 2026.

    Paper - 127.828 серверов (70%)
    Purpur - 17.349 (9.4%)
    Spigot - 12.497 (6.8%)
    Leaf - 4.229 (2.3%)
    UniverseSpigot - 2.005
    Arclight - 1.604
    Folia - 1.186
    Mohist - 1.003
    AdvancedSlimePaper - 816
    CatServer - 772
    Canvas - 594
    Leaves - 488
    Pufferfish - 484
    Bukkit и CraftBukkit - 434
    DivineMC - 168

    Обратите внимание на пропорцию. Все споры про модные ядра идут вокруг нескольких процентов серверов, остальные спокойно сидят на Paper.

    Пара имен из списка, которые я выше не разбирал. Leaves - форк Paper для технических серверов, он наоборот сохраняет часть ванильных механик и багов, на которых держатся фермы. AdvancedSlimePaper - формат хранения миров SlimeWorld, его берут под мини-игры. UniverseSpigot по цифрам заметен, но происхождение сборки я не проверял и ставить вслепую не советую.

    Чаще всего спрашивают, когда уже Minecraft научится грузить все ядра процессора. Научился. Только платить за это придется совместимостью с плагинами.

    Folia - официальная регионализированная многопоточность от самой команды PaperMC. Мир режется на регионы, каждый тикается в своем потоке, и сервер наконец утилизирует 32 ядра вместо одного.

    Почему тогда всего 1.186 серверов при четырех тысячах звезд на GitHub? Потому что Folia ломает плагины. Автор плагина обязан думать про владение регионом при каждом обращении к миру, и это не "поправить пару вызовов". EssentialsX Folia официально не поддерживает и прямо предупреждает про потерю данных игроков. Новичку туда нельзя.

    Canvas и DivineMC - экспериментальная многопоточность для тех, кто понимает, что делает. Canvas это гибрид Folia и Paper с опциональной регионализацией, DivineMC - форк Purpur с параллельным тиком чанков и миров. Обоим нужно 5 и больше физических ядер, на общем хостинге они смысла не имеют.

    И еще одно, про любую регионализацию сразу. Если все Ваши игроки толкутся на спавне, они сидят в одном регионе, и выигрыша не будет вообще никакого. Многопоточность окупается там, где игроки размазаны по карте.

    Отдельная история для тех, кому нужны моды и плагины Bukkit одновременно. Тут живут Arclight (1.604 сервера), Mohist (1.003) и CatServer (772).

    Работает это через прослойку, которая переводит вызовы Bukkit в моды, и прослойка эта дырявая по своей природе. Часть плагинов отваливается, часть багов не воспроизводится больше нигде, а помощи ждать особо неоткуда. Если можно обойтись без модов - обходитесь.

    От чего держаться подальше

    • Платные ядра, авторы которых обещают "асинхронность всего". С вероятностью 99,99% это развод.
    • Bukkit, CraftBukkit и Spigot. По производительности они давно позади всего, к чему у Вас есть доступ.
    • Pufferfish. Именно там придумали DAB - алгоритм, который реже тикает мозги дальних мобов. Вещь отличная, но проект фактически растворился в Leaf, и ставить его отдельно сейчас смысла мало.
    • Форки третьего и четвертого колена. Чем дальше от Paper, тем больше нестабильности и тем меньше людей, способных помочь. Хотите еще производительности - оптимизируйте сервер, а не ищите ядро посвежее.
    • Любые плагины, которые включают, выключают или перезагружают другие плагины во время работы сервера. В части 8 объясняю, почему это так плохо кончается.
    Про мертвое коротко. Tuinity, Airplane, TacoSpigot, Yatopia, Scissors, Gale и Plazma больше не развиваются. Часть их наработок давно уехала в Paper, так что Вы ничего не теряете.

    Если Вы все-таки сидите на ванили, Fabric или Spigot, зайдите в server.properties и поставьте sync-chunk-writes на false. В Paper и его форках эта опция принудительно выключена, а на остальных ядрах ее надо выключать руками. Она позволяет сохранять чанки вне основного потока и заметно снимает нагрузку.

    >>> Часть 2: Java, запуск и подготовка мира (тык)
     
    Последнее редактирование: 2 сен 2026
  2. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Это продолжение статьи Настройка сервера и оптимизация от А до Я. Начало - в первом посте темы. << Часть 1: Выбор ядра и версии

    Часть 2. Java, запуск и подготовка мира

    Прежде чем крутить конфиги, надо разобраться с тем, на чем сервер вообще работает. Половина жалоб на лаги упирается не в настройки, а в неправильную Java и запуск без флагов.

    Java

    ВАЖНО! Версиям 26.x нужна Java 25 или новее. На Java 21 они просто не стартуют.

    Сборку берите у Adoptium Temurin, подойдут также Azul Zulu, Amazon Corretto и Microsoft Build. Инструкция по установке под разные системы есть у самого Paper - docs.papermc.io/misc/java-install.

    Не ставьте headless-сборки Java, то есть пакеты с суффиксом -headless. В них не хватает зависимостей, и Paper с ними работает некорректно.

    Экзотика вроде OpenJ9 и GraalVM формально запускается, но Paper ее не поддерживает, и разбираться с багами Вы будете в одиночку.

    Флаги запуска

    Голый java -jar paper.jar для сервера с живыми игроками не годится. Настройки сборщика мусора по умолчанию рассчитаны не на Minecraft, и Вы получите заметные фризы там, где их могло не быть.

    Рабочая строка запуска выглядит так:

    Код:
    java -Xms4G -Xmx4G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true --sun-misc-unsafe-memory-access=allow -jar paper.jar --nogui
    
    Это флаги Aikar - подобранный набор параметров сборщика мусора G1GC, который на серверах Minecraft ведет себя заметно лучше значений по умолчанию.

    Правила по памяти:
    • -Xms и -Xmx всегда равны. Если они разные, часть памяти простаивает, а G1GC хуже раскладывает регионы.
    • Heap - это не вся память машины. Если на VPS 8 ГБ, ставьте серверу 6 или 6.5, остальное нужно системе.
    • В примере стоит 4G как разумный старт. Документация Paper советует 6-10 ГБ независимо от онлайна, но небольшому серверу 4 ГБ хватает с запасом.
    • Если heap 12 ГБ и больше, у Aikar меняются несколько параметров молодого поколения. Точные значения смотрите по ссылке выше.
    Отдельно про --sun-misc-unsafe-memory-access=allow. На Java 25 при старте в консоль сыпется предупреждение про sun.misc.Unsafe от библиотеки JOML. Сервер работает, но лог засоряется. Этот флаг убирает предупреждение и ставится до -jar.

    Про альтернативные сборщики мусора спрашивают часто. Короткий ответ - оставайтесь на G1GC. ZGC имеет смысл разве что на очень больших heap и только после того, как Вы профилировщиком доказали, что паузы сборщика действительно Ваша проблема. Флаги G1 при этом надо убирать, они с ZGC не работают.

    Предгенерация мира

    Раньше предгенерация была первым делом для любого сервера. Сейчас генерация чанков в Paper устроена намного лучше, и польза от предгенерации осталась в двух случаях. Первый - слабый или одноядерный процессор. Второй - подготовка карты для плагинов вроде Pl3xMap или Dynmap.

    Если предгенерировать все-таки надо, берите Chunky. Процесс может занять несколько часов, все зависит от радиуса.

    ВАЖНО! Обязательно поставьте границу мира, иначе игроки просто выйдут за предгенерированную область и начнут генерировать чанки заново.

    Границу ставим ванильную, командой /worldborder set [диаметр]. Дело тут не в одних чанках. Ванильная граница еще и ограничивает поиск структур, из-за которого сервер умеет намертво зависать на генерации карт сокровищ.

    Помните, что обычный мир, ад и край - три отдельных мира с отдельными границами, и ставить их надо каждому. Ад в 8 раз меньше обычного мира (если Вы не меняли это датапаком), так что ошибка в размере выкинет игроков за границу.

    С миром на этом все. Остался последний вопрос из той же темы: чем сервер занят, когда в этом мире никого нет. По умолчанию тем же, чем и всегда - гоняет мобов, тикает редстоун, растит пшеницу. Всю ночь и ни для кого.

    pause-when-empty-seconds (server.properties)
    Рекомендуемое значение: 60
    Сколько секунд сервер ждет после ухода последнего игрока, прежде чем остановить тик мира. По умолчанию стоит -1, то есть выключено.

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

    Побочный эффект очевиден. Автоматические фермы и все, что завязано на время, пока никого нет, тоже стоят. Для небольшого сервера, где ночью пусто, это лучший размен из всех, что есть в статье. Для сервера, который держат ради ферм, ставьте -1.

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

    >>> Часть 3: Сеть и чанки (тык)
     
    Последнее редактирование: 2 сен 2026
  3. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Это продолжение статьи Настройка сервера и оптимизация от А до Я. Начало - в первом посте темы. << Часть 2: Java, запуск и подготовка мира

    Часть 3. Сеть и чанки

    Начнем с обещанного разбора конфигов, а дальше возьмемся за сеть и чанки: за то, сколько мира сервер считает и сколько из него отдает игрокам.

    Где что лежит
    Прежде чем что-то менять, надо понимать, в какой файл лезть. Конфигов у Paper сейчас пять штук.
    • server.properties - ванильные настройки. Порт, режим игры, дистанции прорисовки, сжатие пакетов.
    • bukkit.yml - лимиты спавна мобов и интервалы между попытками спавна.
    • spigot.yml - радиусы активации сущностей, слияние предметов, воронки.
    • config/paper-global.yml - настройки всего сервера целиком.
    • config/paper-world-defaults.yml - настройки миров. Переопределяются для конкретного мира в world/dimensions/<пространство_имен>/<ключ>/paper-world.yml, например world/dimensions/minecraft/overworld/paper-world.yml.
    Если у Вас Purpur, к ним добавляется purpur.yml.

    ВАЖНО! Файла paper.yml не существует. Если инструкция велит открыть его, она написана до версии 1.19 и все остальное в ней надо перепроверять.

    Второй момент, на котором легко споткнуться. В 26.1 миры переехали в папку world/dimensions/, отдельных world_nether и world_the_end в корне сервера больше нет. И еще: после того как мир обновится до 26.x, откатить его назад уже не выйдет, поэтому бэкап перед обновлением обязателен.

    Сеть

    network-compression-threshold (server.properties)
    Рекомендуемое значение: 256
    Предельный размер пакета в байтах, после которого сервер пытается его сжать. Чем больше значение, тем меньше работы процессору и тем больше трафика.

    Значение -1 отключает сжатие совсем. Так имеет смысл делать, если сервер стоит за прокси или на той же машине, где пинг меньше 2 мс. Внутренняя сеть спокойно переварит несжатый трафик, а процессор скажет спасибо.

    Задирать значение на обычном сервере не стоит, игрокам с плохим интернетом станет только хуже.

    Чанки

    simulation-distance (server.properties)
    Рекомендуемое значение: 4
    Расстояние в чанках вокруг игрока, которое сервер обсчитывает. Все, что происходит само по себе, происходит внутри этого радиуса: плавятся печки, растут посевы, тикает редстоун, думают мобы.

    Этот параметр специально ставят низким, где-то 3 или 4, потому что есть отдельный view-distance. Игрок будет видеть далеко, а считать сервер будет только вблизи.

    view-distance (server.properties)
    Рекомендуемое значение: 7
    Расстояние в чанках, которое сервер отправляет игроку. Эти чанки видно, но внутри них ничего не тикает, если они за пределами simulation-distance.

    Итоговая дальность равна большему из двух значений. Поставили simulation 4 и view 12 - игрок увидит 12 чанков.

    Занижать view-distance слишком сильно не надо. Начиная с 1.18 клиент честно рисует туман по серверной дистанции, и на маленьких значениях мир выглядит некрасиво.

    view-distance (spigot.yml)
    Рекомендуемое значение: default
    Тезка из spigot.yml перебивает значение из server.properties, если стоит не default. Оставьте default, чтобы обе дистанции лежали в одном файле и не приходилось искать, откуда взялось текущее значение.

    delay-chunk-unloads-by (paper-world)
    Рекомендуемое значение: 10s
    Сколько секунд чанк остается загруженным после того, как игрок из него ушел. Помогает не грузить и не выгружать одно и то же по десять раз, когда игрок ходит туда-сюда.

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

    prevent-moving-into-unloaded-chunks (paper-world)
    Рекомендуемое значение: true
    Не пускает игрока в незагруженный чанк. Иначе сервер вынужден грузить чанк прямо посреди тика, в основном потоке, и это как раз тот случай, когда весь сервер замирает на доли секунды.

    Чем меньше у Вас дистанция прорисовки, тем чаще игроки упираются в край загруженной области, и тем нужнее эта опция.

    entity-per-chunk-save-limit (paper-world)
    Рекомендуемые значения:
    Код:
          area_effect_cloud: 8
          arrow: 16
          breeze_wind_charge: 8
          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
          lingering_potion: 8
          shulker_bullet: 8
          small_fireball: 8
          snowball: 8
          spectral_arrow: 16
          splash_potion: 8
          trident: 16
          wind_charge: 8
          wither_skull: 4
    
    Сколько сущностей каждого типа сервер согласен сохранить в одном чанке. Все, что сверх лимита, при сохранении выбрасывается.

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

    Значения подгоняйте под себя, около 10 на снаряд - нормальный ориентир. Сюда можно дописать любую сущность, список идентификаторов есть на minecraft.wiki. Мешать игрокам строить большие фермы этот параметр не предназначен, для ферм есть другие настройки.

    >>> Часть 4: Мобы (тык)
     
    Последнее редактирование: 2 сен 2026
  4. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Это продолжение статьи Настройка сервера и оптимизация от А до Я. Начало - в первом посте темы. << Часть 3: Сеть и чанки

    Часть 4. Мобы

    Мобы почти всегда оказываются главным пожирателем времени тика. Их много, каждый думает, ищет дорогу и проверяет, кто рядом. Тут собраны настройки, которые дают самый заметный прирост.

    spawn-limits (bukkit.yml)
    Рекомендуемые значения:
    Код:
        monsters: 20
        animals: 5
        water-animals: 2
        water-ambient: 2
        water-underground-creature: 3
        axolotls: 3
        ambient: 1
    
    Считается лимит так: количество игроков * значение. Логично, что чем меньше число, тем меньше мобов вокруг.

    Снижать этот параметр - палка о двух концах. Серверу работы меньше, но на некоторых режимах естественный спавн мобов и есть основа игры. До 20 и ниже спокойно можно опускаться, если заодно правильно выставить mob-spawn-range: при маленьком радиусе спавна будет казаться, что мобов вокруг даже больше.

    Дополнительный лимит накладывает per-player-mob-spawns, он же раздает мобов игрокам поровну. У Paper эти лимиты можно задать отдельно для каждого мира в paper-world.

    ticks-per (bukkit.yml)
    Рекомендуемые значения:
    Код:
        monster-spawns: 10
        animal-spawns: 400
        water-spawns: 400
        water-ambient-spawns: 400
        water-underground-creature-spawns: 400
        axolotl-spawns: 400
        ambient-spawns: 400
    
    Как часто в тиках сервер вообще пытается кого-то заспавнить. Водным и амбиентным мобам каждый тик не нужен, их редко убивают в промышленных масштабах.

    С монстрами тоже все нормально. Небольшая пауза между попытками спавна не портит даже фермы мобов. Все значения тут должны быть больше 1.

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

    mob-spawn-range (spigot.yml)
    Рекомендуемое значение: 3
    Радиус в чанках, внутри которого вокруг игрока появляются мобы. Уменьшая его вместе со spawn-limits, Вы получаете меньше мобов на сервере при том же ощущении населенности, потому что все они теперь ближе к игроку.

    Значение не должно превышать Вашу simulation-distance, и никогда не должно быть больше, чем hard-радиус деспавна, деленный на 16.

    entity-activation-range (spigot.yml)
    Рекомендуемые значения:
    Код:
          animals: 16
          monsters: 24
          raiders: 48
          misc: 8
          water: 8
          villagers: 16
          flying-monsters: 48
    
    На каком расстоянии от игрока моб начинает думать и действовать. Дальше этой границы он просто висит в мире и почти ничего не стоит.

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

    entity-tracking-range (spigot.yml)
    Рекомендуемые значения:
    Код:
          players: 48
          animals: 48
          monsters: 48
          misc: 32
          other: 64
    
    Расстояние в блоках, с которого сущности вообще отправляются игроку. За этой границей их для клиента не существует.

    Занизите слишком сильно - и мобы начнут появляться из воздуха прямо перед носом. Почти всегда это значение должно быть больше, чем entity-activation-range.

    tick-inactive-villagers (spigot.yml)
    Рекомендуемое значение: false
    Должны ли жители жить своей жизнью за пределами радиуса активации. Отключение дает прирост, потому что жители - одни из самых дорогих мобов в игре.

    Взамен возможны странности. Пополнение торговых предложений и железные фермы могут работать не так, как игроки привыкли.

    nerf-spawner-mobs (spigot.yml)
    Рекомендуемое значение: true
    Мобы из спавнеров рождаются без ИИ и просто стоят на месте. На сервере со спавнерами это экономит очень много.

    Если нужно, чтобы они хотя бы не тонули, поставьте spawner-nerfed-mobs-should-jump в true в paper-world.

    despawn-ranges (paper-world)
    Рекомендуемые значения:
    Код:
          ambient:
            soft: 30
            hard: 72
          axolotls:
            soft: 30
            hard: 72
          creature:
            soft: 30
            hard: 72
          misc:
            soft: 30
            hard: 72
          monster:
            soft: 30
            hard: 72
          underground_water_creature:
            soft: 30
            hard: 72
          water_ambient:
            soft: 30
            hard: 72
          water_creature:
            soft: 30
            hard: 72
    
    Расстояния в блоках, на которых мобы исчезают. За пределами hard моб пропадает мгновенно, между soft и hard - со случайным шансом.

    Soft держим около 30. Hard считаем по формуле (simulation-distance * 16) + 8, то есть при simulation-distance 4 получается 72. Запас в 8 блоков нужен, чтобы мобы не испарялись прямо на глазах, когда игрок отошел на шаг за границу загрузки. Работает это в связке с delay-chunk-unloads-by.

    Hard всегда должен быть больше soft.

    В paper-world есть и более тонкие варианты. Можно задать soft и hard отдельно по горизонтали и вертикали, выбрать форму области параметром despawn-range-shape (прямоугольник, эллипсоид или цилиндр) и через despawn-time принудительно убирать конкретные типы сущностей через заданное время. Новичку это не нужно, но знать полезно.

    per-player-mob-spawns (paper-world)
    Рекомендуемое значение: true
    Учитывает при спавне, сколько мобов уже крутится около конкретного игрока.

    Без этого один игрок с большой фермой забивает общий лимит на весь сервер, и у остальных мобы перестают появляться вообще. С включенным параметром спавн ведет себя примерно как в одиночной игре, и Вы можете смело ставить лимиты пониже. Само по себе оно стоит чуть-чуть производительности, но выигрыш от заниженных лимитов перекрывает это с запасом.

    max-entity-collisions (paper-world)
    Рекомендуемое значение: 2
    Сколько столкновений сущность обрабатывает за раз. Значение 0 означает, что толкать других она не может вообще, включая игроков.

    Двойки хватает почти везде. Учтите, что игровое правило maxEntityCramming становится бесполезным, если его значение больше этого.

    update-pathfinding-on-block-update (paper-world)
    Рекомендуемое значение: false
    Отключает пересчет маршрутов при каждом изменении блока. Поиск пути становится реже, а он дорогой.

    Мобы при этом выглядят чуть тупее, потому что обновляют маршрут раз в 5 тиков, то есть четыре раза в секунду. На глаз почти незаметно.

    fix-climbing-bypassing-cramming-rule (paper-world)
    Рекомендуемое значение: true
    Чинит дыру, из-за которой лезущие по стене сущности игнорируют правило тесноты. Без этого в маленькой комнате может собраться абсурдная куча пауков.

    armor-stands.tick (paper-world)
    Рекомендуемое значение: false
    Стойки для брони перестают тикать. На них больше не действует гравитация и их не толкает вода.

    Почти всегда это безопасно. Если у Вас плагины, которые двигают стойки или используют их как декорации со сложным поведением, и что-то сломалось - верните true.

    armor-stands.do-collision-entity-lookups (paper-world)
    Рекомендуемое значение: false
    Отключает проверку столкновений у стоек. Если стоек на сервере сотни, а сталкиваться с ними ни с кем не нужно, экономия ощутимая.

    tick-rates (paper-world)
    Рекомендуемые значения:
    Код:
          behavior:
            villager:
              validatenearbypoi: 60
              acquirepoi: 120
          sensor:
            villager:
              secondarypoisensor: 80
              nearestbedsensor: 80
              villagerbabiessensor: 40
              playersensor: 40
              nearestlivingentitysensor: 40
    
    Как часто в тиках срабатывают отдельные кусочки мозга жителей. Датчики отвечают за то, что житель замечает вокруг, поведения - за то, что он с этим делает.

    Самый тяжелый из них acquirepoi, поиск рабочего места. Поэтому он и растянут сильнее всех. Если жители начали тупить с поиском работы и кроватей, уменьшайте значения.

    >>> Часть 5: Предметы, редстоун и мелочи (тык)
     
    Последнее редактирование: 2 сен 2026
  5. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Это продолжение статьи Настройка сервера и оптимизация от А до Я. Начало - в первом посте темы. << Часть 4: Мобы

    Часть 5. Предметы, редстоун и мелочи

    Мобов разобрали, теперь все остальное. По отдельности эти параметры дают немного, но вместе вытягивают заметно, а некоторые вообще закрывают целые классы проблем.

    merge-radius (spigot.yml)
    Рекомендуемые значения:
    Код:
          item: 3.5
          exp: 4.0
    
    На каком расстоянии выпавшие предметы и сферы опыта склеиваются в одну сущность. Меньше сущностей на земле - меньше работы серверу.

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

    Опыт склеивается только в момент выпадения, потом уже нет.

    hopper-transfer и hopper-check (spigot.yml)
    Рекомендуемые значения: 8 и 8
    Первый параметр - сколько тиков воронка ждет перед тем, как передать предмет дальше. Второй - как часто она проверяет, не появилось ли что-нибудь сверху.

    Воронки на серверах обычно расставлены сотнями, и каждая тикает. Увеличение обоих значений дает хороший прирост.

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

    alt-item-despawn-rate (paper-world)
    Рекомендуемые значения:
    Код:
          enabled: true
          items:
            cobblestone: 300
            netherrack: 300
            sand: 300
            red_sand: 300
            gravel: 300
            dirt: 300
            short_grass: 300
            pumpkin: 300
            melon_slice: 300
            kelp: 300
            bamboo: 300
            sugar_cane: 300
            twisting_vines: 300
            weeping_vines: 300
            oak_leaves: 300
            spruce_leaves: 300
            birch_leaves: 300
            jungle_leaves: 300
            acacia_leaves: 300
            dark_oak_leaves: 300
            mangrove_leaves: 300
            cherry_leaves: 300
            cactus: 300
            diorite: 300
            granite: 300
            andesite: 300
            scaffolding: 600
    
    Отдельное время жизни для мусорных предметов. Булыжник, земля, листва и прочее, что валяется под ногами после любой стройки, пропадает через 15 секунд вместо стандартных пяти минут.

    Вместе с merge-radius это полностью заменяет плагины-чистильщики. Плагин сканирует мир и удаляет предметы, тратя на это ресурсы. Тут удалять не приходится, они просто не доживают.

    redstone-implementation (paper-world)
    Рекомендуемое значение: ALTERNATE_CURRENT
    Позволяет заменить ванильный алгоритм редстоуна на более быстрый. Вариантов три: VANILLA, EIGENCRAFT и ALTERNATE_CURRENT.

    Берите ALTERNATE_CURRENT, он основан на моде Alternate Current и работает быстрее старого eigencraft. Смысл в том, что алгоритм убирает лишние обновления блоков, которых в ванили генерируется неприлично много.

    На очень технических схемах возможны мелкие расхождения с ванильным поведением, но прирост того стоит. Заодно чинится часть старых косяков редстоуна, тянущихся еще от CraftBukkit.

    hopper.disable-move-event (paper-world)
    Рекомендуемое значение: false
    Отключает событие InventoryMoveItemEvent.

    Тут есть нюанс, из-за которого этот параметр часто советуют зря. Событие и так не вызывается, если на него никто не подписан. То есть включать отключение имеет смысл, только когда у Вас есть плагины-слушатели и Вы сознательно готовы их сломать.

    Не ставьте true, если пользуетесь плагинами защиты территорий. Они слушают это событие, чтобы воронки не растаскивали чужие сундуки.

    hopper.ignore-occluding-blocks (paper-world)
    Рекомендуемое значение: true
    Воронки перестают заглядывать в контейнеры, спрятанные внутри сплошных блоков. Классический пример - вагонетка с воронкой под слоем песка или гравия.

    Часть технических устройств на этом поведении держится, и они сломаются.

    tick-rates.mob-spawner (paper-world)
    Рекомендуемое значение: 2
    Как часто тикает сам спавнер. Речь не про спавн мобов, а про проверку условий.

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

    optimize-explosions (paper-world)
    Рекомендуемое значение: true
    Меняет ванильный алгоритм расчета взрыва на более быстрый. Цена - небольшая неточность в уроне. На практике никто ее не замечает.

    environment.treasure-maps.enabled (paper-world)
    Рекомендуемое значение: false
    Вот это - одна из самых частых причин, по которым сервер намертво зависает на пустом месте.

    Когда игрок получает карту сокровищ, сервер идет искать нужную структуру. Если структура оказалась в несгенерированных чанках, поиск может длиться десятки секунд, и все это время сервер стоит.

    Включать обратно безопасно только если Вы предгенерировали мир и поставили ванильную границу.

    environment.treasure-maps.find-already-discovered (paper-world)
    Рекомендуемые значения:
    Код:
          loot-tables: true
          villager-trade: true
    
    Если карты все-таки включены, поставьте оба значения в true. Тогда карта поведет к уже открытой структуре вместо того, чтобы искать нетронутую где-то за краем сгенерированного мира.

    villager-trade отвечает за карты у жителей, loot-tables - за все, что выпадает из сундуков и прочей добычи.

    tick-rates.grass-spread (paper-world)
    Рекомендуемое значение: 4
    Как часто сервер пытается распространить траву и мицелий на соседнюю землю.

    Значение 4 почти не меняет скорость зарастания на глаз, но заметно снимает нагрузку.

    tick-rates.container-update (paper-world)
    Рекомендуемое значение: 1
    Как часто обновляются открытые контейнеры. Оставьте единицу.

    Увеличивать имеет смысл только если обновления контейнеров реально попали к Вам в профиль лагов, а такое бывает редко. Взамен игроки начнут ловить рассинхрон и призрачные предметы в инвентаре.

    non-player-arrow-despawn-rate и creative-arrow-despawn-rate (paper-world)
    Рекомендуемые значения: 20 и 20
    Через сколько тиков исчезают воткнувшиеся стрелы, выпущенные мобами и игроками в творческом режиме.

    Подобрать такие стрелы все равно нельзя, так что держать их в мире незачем. 20 тиков - это одна секунда.

    Если у Вас Purpur

    Отдельный файл purpur.yml, и там есть несколько вещей, которых у Paper нет.

    use-alternate-keepalive - true
    Альтернативная проверка соединения. Сервер шлет пакет раз в секунду и выкидывает игрока, только если за 30 секунд не ответил ни один. Игроков с плохим интернетом перестает выбрасывать из-за одного потерянного пакета. Известна несовместимость с TCPShield.

    villager.lobotomize.enabled - true
    Житель, который не может никуда дойти, лишается ИИ и только периодически обновляет ассортимент. Спасает на серверах, где игроки держат жителей в клетках размером в один блок. Включайте только если жители реально лагают: сами проверки на возможность пройти тоже стоят ресурсов.

    villager.search-radius
    Код:
              acquire-poi: 16
              nearest-bed-sensor: 16
    
    Радиус, в котором житель ищет рабочее место и кровать. При большом количестве жителей прирост очень заметный, но до дальних станков и кроватей они дотягиваться перестанут.

    entities-can-use-portals - false
    Запрещает всем, кроме игроков, ходить через порталы. Смысл в том, что переход сущности между мирами грузит чанки в основном потоке. Побочка очевидная, вагонетки и животные через порталы больше не поедут.

    dolphin.disable-treasure-searching - true
    Дельфины перестают искать структуры. Проблема ровно та же, что и с картами сокровищ.

    teleport-if-outside-border - true
    Игрока за границей мира телепортирует на спавн. Ванильная граница обходится, а урон от нее лечится, так что дыра эта вполне рабочая.

    zombie.aggressive-towards-villager-when-lagging - false
    Зомби перестают охотиться на жителей, когда tps просел ниже порога из lagging-threshold. Помогает серверу выкарабкаться, вместо того чтобы закапываться глубже.

    >>> Часть 6: Общие настройки и настройки по мирам (тык)
     

    Вложения:

    • xray.png
      xray.png
      Размер файла:
      508 КБ
      Просмотров:
      1.870
    Последнее редактирование: 2 сен 2026
  6. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Это продолжение статьи Настройка сервера и оптимизация от А до Я. Начало - в первом посте темы. << Часть 5: Предметы, редстоун и мелочи

    Часть 6. Общие настройки и настройки по мирам

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

    paper-global.yml

    Файл лежит в папке config. Значений по умолчанию тут почти всегда достаточно, поэтому разберу только то, что действительно стоит знать.

    chunk-system
    Рекомендуемые значения: оставить как есть
    Код:
    chunk-system:
      io-threads: -1
      worker-threads: -1
    
    Сколько потоков уходит на чтение и запись чанков и сколько на их генерацию. Минус единица означает, что Paper посчитает сам, исходя из числа ядер.

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

    chunk-loading-basic
    Рекомендуемые значения: оставить как есть
    Код:
    chunk-loading-basic:
      player-max-chunk-load-rate: 100.0
      player-max-chunk-send-rate: 75.0
    
    Сколько чанков в секунду сервер готов загрузить и отправить одному игроку.

    Ограничение существует, чтобы один человек, летящий в элитрах на полной скорости, не выедал всю пропускную способность. Занижать стоит, только если у Вас слабый канал и игроки жалуются на долгую прогрузку при заходе.

    misc.max-joins-per-tick
    Рекомендуемое значение: 3
    Сколько игроков сервер пускает внутрь за один тик. По умолчанию 5.

    Заход игрока - дорогая операция: грузятся его данные, чанки вокруг, инвентарь. После рестарта, когда все ломятся обратно разом, сервер захлебывается именно на этом. Тройка растягивает толпу по времени и убирает фризы первых минут.

    misc.region-file-cache-size
    Рекомендуемое значение: 256
    Сколько файлов регионов сервер держит открытыми. Значение по умолчанию нормальное.

    Поднимать имеет смысл на больших мирах с активным перемещением игроков, но это память, а не магия.

    packet-limiter
    Рекомендуемые значения: оставить как есть
    Код:
    packet-limiter:
      all-packets:
        action: KICK
        interval: 7.0
        max-packet-rate: 500.0
    
    Ограничитель потока пакетов от клиента. Если кто-то шлет больше 500 пакетов за 7 секунд, его выкидывает.

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

    spam-limiter
    Рекомендуемые значения: оставить как есть
    Код:
    spam-limiter:
      incoming-packet-threshold: 300
      recipe-spam-limit: 20
      tab-spam-limit: 500
    
    Отдельные лимиты на частные случаи. recipe-spam-limit прикрывает старый трюк с быстрым переключением рецептов в верстаке, tab-spam-limit - долбежку по Tab ради автодополнения.

    Оба вектора использовали для лагания серверов, так что выключать это не надо.

    item-validation
    Рекомендуемые значения: оставить как есть
    Ограничения на длину названий, страниц книг и прочего, что клиент присылает серверу. Тут же лежит resolve-selectors-in-books, который по умолчанию выключен, и включать его не надо.

    Книги с огромным содержимым - классический способ раздуть файл игрока и уронить сервер при следующей загрузке. Значения по умолчанию с этим справляются.

    unsupported-settings
    Рекомендуемое значение: не трогать
    Секция называется так не для красоты. Там лежат опции, которые ломают ванильные механики или открывают известные дыры, и поддержки по ним не будет.

    Если гайд из интернета советует что-то отсюда включить, закройте гайд.

    Здесь же живет секция proxies.velocity, если сервер стоит за прокси. К оптимизации она отношения не имеет, разбор есть в статье Создание сервера с нуля от А до Я.

    Настройки по мирам

    Малоизвестная, но полезная штука. Все, что лежит в config/paper-world-defaults.yml, применяется ко всем мирам сразу. А дальше любой параметр можно переопределить для конкретного мира в его собственном paper-world.yml.

    Работает это по принципу наследования. Сначала берется значение из defaults, а если для мира задано свое, побеждает оно.

    Большую часть настроек трогать по мирам не надо, они и так общие. А вот эти стоит рассмотреть отдельно.

    anti-xray
    Хотите ли Вы тратить процессор на сокрытие руды в аду и в краю? В краю прятать нечего, там его обычно просто выключают. Ад настраивают отдельно, там свои руды и своя высота. Подробно разберу в следующей части.

    spawn-limits и ticks-per-spawn
    Paper позволяет задать лимиты спавна на каждый мир, а не только глобально через bukkit.yml. Удобно, когда обычный мир у Вас ванильный, а в отдельном мире-шахте мобы не нужны совсем.

    chunks.auto-save-interval
    Как часто мир сохраняется на диск. Реже сохранять - меньше нагрузка, но больше потери при падении сервера. Для мира, который почти не меняется, интервал можно смело растянуть.

    Отдельно про постоянно загруженный спавн, потому что вопрос всплывает регулярно. Старой опции keep-spawn-loaded в Paper больше нет. Пришедший ей на смену геймрул spawnChunkRadius тоже убрали, а вместе с ним и сами спавн-чанки как механику. Если Вам нужно, чтобы какая-то область не выгружалась никогда, пользуйтесь командой /forceload.

    >>> Часть 7: Anti-Xray (тык)
     
    Последнее редактирование: 2 сен 2026
  7. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Это продолжение статьи Настройка сервера и оптимизация от А до Я. Начало - в первом посте темы. << Часть 6: Общие настройки и настройки по мирам

    Часть 7. Anti-Xray

    Единственный раздел статьи, где мы сознательно тратим производительность, а не экономим ее. Взамен получаем защиту от читеров, которые видят руду сквозь блоки.

    Сразу отвечу на главный вопрос. Да, встроенный Anti-Xray работает лучше любого плагина с той же задачей, и стоит при этом дешевле. Плагин может только реагировать постфактум, а Paper подменяет блоки в самом пакете, который уходит клиенту. Читер физически не получает данных о руде.

    Официальное руководство лежит в документации Paper, оно выросло из рекомендаций stonar96. Ниже - выжимка с готовыми конфигами.

    ВАЖНО! После любых правок Anti-Xray сервер нужно перезапустить. Команда /reload настройки к уже загруженным мирам не применит, да и пользоваться ей нельзя в принципе, об этом в следующей части.

    Как это работает

    Настройки живут в paper-world, в секции anticheat.anti-xray. Режимов три.

    engine-mode: 1 подменяет руду на обычный камень, незерак или эндерняк, смотря какой мир. Дешево по процессору, но защищает не полностью. Спрятать можно только ту руду, которая со всех сторон закрыта твердыми блоками. Все, что торчит в пещеру, читер по-прежнему видит.

    engine-mode: 2 идет с другой стороны. Он не прячет руду, а разбрасывает по чанку фальшивую, случайным образом, прямо в момент отправки пакета. Настоящие жилы тонут среди сотен поддельных. Вот как это выглядит глазами игрока с читом:

    xray.png

    engine-mode: 3 - это тот же второй режим, но фальшивые блоки раскладываются слоями, и каждый горизонтальный слой чанка заполняется одним типом блока. Защита такая же, а данные сжимаются заметно лучше, и объем трафика при заходе игрока падает примерно вдвое.

    Что выбрать? Если процессор впритык или канал узкий - берите первый режим. Если хочется нормальной защиты - третий, он дает то же самое, что второй, но дешевле по сети.

    Ни один режим не спрячет руду, открытую воздухом. Это ограничение самой идеи: клиенту нужно знать, что рисовать. Против любителей искать пещеры в режимах 2 и 3 помогает добавление air в список скрытых блоков, тогда мир для читера покрывается дырами. Но у всех игроков от этого может просесть fps, так что решайте сами.

    Обычный мир

    Код:
    anticheat:
      anti-xray:
        enabled: true
        engine-mode: 1
        max-block-height: 64
        update-radius: 2
        lava-obscures: false
        use-permission: false
        hidden-blocks:
        - chest
        - coal_ore
        - deepslate_coal_ore
        - copper_ore
        - deepslate_copper_ore
        - raw_copper_block
        - diamond_ore
        - deepslate_diamond_ore
        - emerald_ore
        - deepslate_emerald_ore
        - gold_ore
        - deepslate_gold_ore
        - iron_ore
        - deepslate_iron_ore
        - raw_iron_block
        - lapis_ore
        - deepslate_lapis_ore
        - redstone_ore
        - deepslate_redstone_ore
        replacement-blocks:
        - stone
        - oak_planks
        - deepslate
    
    Сундук в списке спрятать сундуки в подземельях не поможет, они стоят в открытых комнатах. А вот зарытые сокровища на пляжах скроет.

    Для третьего режима возьмите этот же конфиг и поменяйте только engine-mode на 3.
    Код:
    anticheat:
      anti-xray:
        enabled: true
        engine-mode: 2
        max-block-height: 64
        update-radius: 2
        lava-obscures: false
        use-permission: false
        hidden-blocks:
        - air
        - copper_ore
        - deepslate_copper_ore
        - raw_copper_block
        - diamond_ore
        - deepslate_diamond_ore
        - gold_ore
        - deepslate_gold_ore
        - iron_ore
        - deepslate_iron_ore
        - raw_iron_block
        - lapis_ore
        - deepslate_lapis_ore
        - redstone_ore
        - deepslate_redstone_ore
        replacement-blocks:
        - chest
        - amethyst_block
        - andesite
        - budding_amethyst
        - calcite
        - coal_ore
        - deepslate_coal_ore
        - deepslate
        - diorite
        - dirt
        - emerald_ore
        - deepslate_emerald_ore
        - granite
        - gravel
        - oak_planks
        - smooth_basalt
        - stone
        - tuff
    
    Обратите внимание, что сундук тут переехал в replacement-blocks. В режимах 2 и 3 блоки с содержимым нельзя класть в скрытые, зато среди подменных они работают нормально.

    Ад и край

    Кладем в paper-world.yml нужного мира. В аду руда другая и потолок другой, поэтому max-block-height поднимаем до 128.

    Ад, первый режим:
    Код:
    anticheat:
      anti-xray:
        max-block-height: 128
        hidden-blocks:
        - ancient_debris
        - nether_gold_ore
        - nether_quartz_ore
    
    Ад, второй и третий режимы:
    Код:
    anticheat:
      anti-xray:
        max-block-height: 128
        hidden-blocks:
        - air
        - ancient_debris
        - bone_block
        - glowstone
        - magma_block
        - nether_bricks
        - nether_gold_ore
        - nether_quartz_ore
        - polished_blackstone_bricks
        replacement-blocks:
        - basalt
        - blackstone
        - gravel
        - netherrack
        - soul_sand
        - soul_soil
    
    Край:
    Код:
    anticheat:
      anti-xray:
        enabled: false
    
    В краю прятать нечего, а процессор он бы ел исправно.

    Про max-block-height. Значение 64 родом из тех времен, когда вся руда лежала внизу. После 1.18 медь и железо генерируются намного выше, так что если у Вас на сервере воюют с читерами всерьез, поднимайте планку. Значение округляется до кратного 16.

    Заодно про потолок ада

    environment.nether-ceiling-void-damage-height (paper-world)
    Рекомендуемое значение: 127
    Игрок выше указанной высоты получает урон, как будто провалился в пустоту.

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

    Ад высотой 128 блоков, поэтому ставим 127. Если Вы меняли высоту ада, ставьте свою высоту минус один.

    >>> Часть 8: Чем мерить лаги и чего не делать (тык)
     
    Последнее редактирование: 2 сен 2026
  8. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Это продолжение статьи Настройка сервера и оптимизация от А до Я. Начало - в первом посте темы. << Часть 7: Anti-Xray

    Часть 8. Чем мерить лаги и чего не делать

    Конфиги закончились. Осталось разобраться, как понять, что именно у Вас тормозит, и какими способами не надо чинить лаги, даже если очень хочется.

    Плагины из разряда "слишком хорошо, чтобы быть правдой"

    1) Плагины, удаляющие предметы с земли
    Не нужны совсем. Все, что они делают, закрывается настройками merge-radius и alt-item-despawn-rate из части 5, причем настраивается там гибче.

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

    2) Плагины для стакания мобов
    Оправдать их сложно. Когда Вы схлопываете сотню естественно заспавненных мобов в одного со счетчиком, лимит спавна освобождается, и сервер немедленно спавнит новых. В итоге он делает больше работы, чем если бы Вы вообще ничего не ставили.

    Единственный вменяемый сценарий - сервер, целиком построенный вокруг спавнеров. Там мобы появляются принудительно и в общий лимит не упираются.

    3) Плагины, которые управляют другими плагинами
    Все, что включает, выключает или перегружает плагины на живом сервере, опасно. Подробности ниже, в разделе про /reload, потому что механика там одна и та же.

    Как понять, что тормозит

    /tps и /mspt
    Первое, куда смотрят. /tps показывает тики в секунду, норма 20. /mspt показывает, сколько миллисекунд ушло на тик.

    mspt честнее. Пока сервер укладывается в 50 мс, tps будет ровно 20, даже если Вы уже на грани и до просадки остались миллисекунды. По mspt эту грань видно заранее.

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

    spark
    ВАЖНО! Если Вам советуют снять timings - совет устарел. Timings отключены по умолчанию с 1.21 и с тех пор не работают. Профилировщик теперь spark, и он идет в комплекте с Paper, ставить ничего не надо.

    Как пользоваться:
    • /spark profiler start - начать запись. Дальше живете обычной жизнью, а лучше воспроизводите тот момент, когда лагает.
    • /spark profiler stop - остановить и получить ссылку на отчет.
    • /spark health - быстрая сводка по tps, памяти, процессору и дискам.
    • /spark tps - подробности по тикам.
    Отчет открывается в браузере в виде дерева вызовов. Читать его надо сверху вниз, разворачивая самые жирные ветки, пока не упретесь в конкретный плагин или конкретную подсистему. Отдельное руководство по поиску причин лаг-спайков есть тут.

    Ссылкой на отчет можно поделиться, когда просите помощи. Это гораздо продуктивнее, чем писать "у меня лагает, помогите".

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

    Эксплойты

    Отдельная категория проблем, которую регулярно принимают за лаги. Сервер может падать или зависать не потому, что плохо настроен, а потому что кто-то нашел способ его положить. Книги с гигантским содержимым, спам рецептами, вылет за границу мира, генерация карт сокровищ в несгенерированных чанках - это все живые способы напакостничать.

    Часть закрывается настройками из этой статьи, часть - обновлением на поддерживаемую версию. Полный разбор с проверками и заплатками собран в репозитории Minecraft exploits and how to fix them, и его стоит прочитать целиком.

    Почему нельзя пользоваться /reload

    Раздел основан на статье me4502.

    Команда /reload появилась в Bukkit в самом начале. Задумка была хорошая. Быстро перечитать конфиги, не роняя сервер. Реализация получилась такая, что команда отключает каждый плагин, а потом пытается включить обратно.

    И тут вылезает фундаментальная проблема. Java не умеет безопасно выгружать уже загруженный код. Вообще. Старые классы остаются в памяти, новые грузятся рядом, и дальше начинается лотерея: где-то остались ссылки на старые объекты, где-то плагин думает, что сервер только что стартовал. Особенно весело, если Вы подменили jar-файл.

    Spigot и Paper никогда не рекомендовали эту команду. Возражения появились еще в 2011 году, вскоре после запуска Bukkit, и с тех пор стало заметно хуже. С каждым обновлением Minecraft то, что надо перезагрузить, становится сложнее, и сама идея перезагрузки давно перестала быть выполнимой.

    Сейчас пользоваться /reload нельзя ни при каких обстоятельствах. Она ломает Minecraft, Bukkit, Spigot, Paper и почти любой плагин на API Bukkit. Даже такая ерунда, как проверка права игрока, после перезагрузки способна отвалиться. Если плагин посыпался ошибками после /reload, это почти наверняка не вина плагина.

    Что делать вместо:
    • Поставить новый плагин, обновить существующий, удалить старый - перезапустить сервер. Других вариантов нет.
    • Перечитать конфиг одного плагина - использовать его собственную команду перезагрузки, например /lp reload у LuckPerms. Если такой команды нет, попросите автора ее добавить или перезапустите сервер.
    • Перезагрузить датапаки - для этого есть /minecraft:reload, она безопасна и к плагинам отношения не имеет.

    Про PlugMan и подобное

    Плагины, которые включают и выключают другие плагины на лету, наступают ровно на те же грабли. Плюс добавляют свои.

    Bukkit не рассчитан на то, что плагины будут загружаться сами по себе посреди работы. Плагин при старте считает, что сервер только что поднялся, и строит свое состояние исходя из этого. Загрузите его через пару часов после старта - и он будет работать с неверными данными, даже не подозревая об этом. Отключите плагин, от которого зависит другой, и получите ошибки на ровном месте.

    Штука эта удобная, соблазн понятный, но на боевом сервере ей не место.
     
    Последнее редактирование: 2 сен 2026
  9. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    резерв
     
  10. Overwrite

    Overwrite Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    OverwriteMC
    Но purpur не форк ядра Puffrefish, а обычный форк бумаги...
     
  11. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    Спасибо, исправил!
     
  12. Dayzee4ka

    Dayzee4ka Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Dayzeee
    Спасибо, оптимизация крутая
     
  13. Автор темы
    iForgotPassword

    iForgotPassword Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    iForgotPassword
    UP. Большое обновление, статья переписана под 2026 год.
    - Обновил статистику версий и ядер (bStats, август 2026). Заодно про новую нумерацию: с декабря 2025 версии выглядят как 26.1, 26.2, никакой 1.22 не будет (Часть 1)
    - Paper поддерживает только 26.2 и 26.1.2, в 1.21.11 заплатки на эксплойты больше не приезжают. Про то, что делать со старыми клиентами, тоже написал (Часть 1)
    - Переписал блок про ядра. Добавил Leaf, отдельно разобрал Folia, Canvas и DivineMC и почему регионализация не работает, когда все толкутся на спавне. Tuinity, Airplane, Yatopia, Gale, Plazma и Pufferfish убрал как мертвые (Часть 1)
    - Java 25 обязательна для 26.x, на Java 21 сервер не стартует. Обновил флаги Aikar, добавил --sun-misc-unsafe-memory-access=allow против спама в логе от JOML (Часть 2)
    - Переписал предгенерацию: Chunky вместо старых плагинов, плюс обязательная ванильная граница мира, она заодно чинит зависания на картах сокровищ (Часть 2)
    - Добавил pause-when-empty-seconds (Часть 2)
    - paper.yml больше не существует, конфигов теперь пять и лежат они в разных местах. Отдельно предупредил, что в 26.1 миры переехали в world/dimensions/ и откатиться после апгрейда нельзя (Часть 3)
    - Anti-Xray: добавил engine-mode 3, он дает ту же защиту, что второй, но вдвое дешевле по трафику. Конфиги для ада и края вынес отдельно (Часть 7)
    - Timings отключены по умолчанию с 1.21 и с тех пор не работают. Весь раздел про замер лагов переписан под spark, он идет в комплекте с Paper (Часть 8)
    - Добавил разбор эксплойтов, которые роняют сервер, со ссылкой на репозиторий с заплатками (Часть 8)
    - Поправил мертвые ссылки и выкинул плагины, которых больше нет
     

Поделиться этой страницей