Начиная с версии 1.19 Paper разделил свой конфиг на два файла в папке config: глобальные параметры в paper-global.yml и настройки миров в paper-world-defaults.yml. Настройка paper.yml (так по привычке называют оба) — самый глубокий уровень тюнинга Minecraft-сервера: здесь лежат оптимизации редстоуна, спавнеров, загрузки чанков и анти-рентген, которых нет ни в Spigot, ни в Bukkit.
Разберу параметры, которые дают реальный прирост, и те, что чаще ломают игру, чем помогают.
Структура и правила работы
/config
paper-global.yml
paper-world-defaults.yml
/world
paper-world.ymlpaper-global.yml— на весь сервер: сеть, античит, логированиеpaper-world-defaults.yml— значения по умолчанию для всех миров<мир>/paper-world.yml— переопределение для конкретного мира; значение отсюда всегда побеждает
Все ключи с описаниями и значениями по умолчанию — в справочнике PaperMC: глобальная конфигурация и конфигурация миров.
Файлы правятся на остановленном сервере, отступы — пробелы. После правки нужен полный рестарт: /reload для Paper-конфига не работает.
Если файлов нет, значит у вас Spigot, а не Paper. Про переход на Paper и разницу ядер — статья Paper, Spigot или Purpur, а сама смена ядра описана в разделе про смену версии и ядра.
Что даёт настройка paper.yml по сравнению со Spigot
Три вещи, которых больше нигде нет:
- Оптимизация редстоуна — альтернативный алгоритм пересчёта проводов
- Раздельный тик спавнеров и деревень — самые тяжёлые механики можно замедлить точечно
- Anti-Xray — серверная защита от рентген-текстур без клиентских модов
На сервере выживания с 40 онлайна корректная настройка Paper даёт обычно 3–6 TPS сверх того, что уже выжато из bukkit.yml и spigot.yml.
Оптимизация редстоуна
misc:
redstone-implementation: ALTERNATE_CURRENTВарианты: VANILLA, EIGENCRAFT, ALTERNATE_CURRENT. Последний — самый быстрый и при этом совместимый с ванильным поведением почти во всех схемах. На сервере с фермами и сортировщиками разница видна сразу в профиле.
Ставьте ALTERNATE_CURRENT, если у вас нет специфичных схем, завязанных на порядок обновления блоков. На техническом сервере с точными таймингами лучше VANILLA.
Тикинг спавнеров и мобов
tick-rates:
mob-spawner: 2
container-update: 1
grass-spread: 4
sensor:
villager:
secondarypoisensor: 40
nearestbedsensor: 40
villagerbabiessensor: 40
behavior:
villager:
validatenearbypoi: 60mob-spawner: 2 вдвое снижает частоту обработки спавнеров. Мобы будут появляться чуть медленнее, но на серверах с десятками фермерских спавнеров это ощутимая экономия.
Сенсоры деревенских жителей — отдельная история. Виллагеры в Minecraft тикают дороже любых других мобов: каждый ищет кровать, рабочее место и точки интереса. Значения 40–60 вместо стандартных 1–20 снижают нагрузку от больших деревень в разы, а игроки замечают только то, что жители чуть медленнее переустраиваются.
Если на сервере есть торговые залы на 50+ жителей, начинайте оптимизацию именно отсюда.
Загрузка и генерация чанков
chunks:
auto-save-interval: 6000
delay-chunk-unloads-by: 10s
max-auto-save-chunks-per-tick: 8
prevent-moving-into-unloaded-chunks: truemax-auto-save-chunks-per-tick: 8 вместо 24 растягивает автосохранение: вместо одного заметного подвисания раз в 5 минут получается равномерная фоновая нагрузка. Это лечит характерный «лаг по расписанию», который многие принимают за проблему с диском.
delay-chunk-unloads-by: 10s не даёт чанкам выгружаться и сразу подгружаться обратно, когда игрок ходит туда-сюда по границе.
prevent-moving-into-unloaded-chunks: true — обязательно на сервере с элитрами и быстрым перемещением, иначе игрок улетает в незагруженную область и провоцирует синхронную генерацию.
Anti-Xray
Серверная защита от рентгена. Работает без клиентских модов, но стоит процессорного времени.
anticheat:
anti-xray:
enabled: true
engine-mode: 2
max-block-height: 64
update-radius: 2
lava-obscures: false
hidden-blocks:
- copper_ore
- deepslate_copper_ore
- gold_ore
- deepslate_gold_ore
- iron_ore
- deepslate_iron_ore
- diamond_ore
- deepslate_diamond_ore
- emerald_ore
- lapis_ore
- redstone_ore
- ancient_debrisengine-mode: 1 подменяет руду на камень — дешевле по CPU, но обходится опытными читерами. engine-mode: 2 дополнительно раскидывает фальшивую руду — надёжнее, но заметно дороже; на слабом тарифе может стоить 1–2 TPS.
max-block-height: 64 ограничивает работу подземельем, где рентген и применяется. Поднимать до 128 смысла нет.
На сервере с приватной аудиторией и белым списком anti-xray можно выключить целиком — как настраивается whitelist, описано в отдельном разделе.
Коллизии и энтити
collisions:
max-entity-collisions: 2
fix-climbing-bypassing-cramming-rule: true
entities:
spawning:
despawn-ranges:
monster:
hard: 96
soft: 32
creature:
hard: 96
soft: 32
per-player-mob-spawns: trueper-player-mob-spawns: true — включено по умолчанию и менять не надо: лимиты считаются на каждого игрока, а не на весь мир, что честнее распределяет мобов.
despawn-ranges со значением hard: 96 вместо 128 убирает мобов на дальней границе раньше. На сервере с 30+ игроками это заметная экономия энтити.
Полезные мелочи
hopper:
cooldown-when-full: true
disable-move-event: false
unsupported-settings:
fix-invulnerable-end-crystal-exploit: true
environment:
optimize-explosions: true
treasure-maps:
enabled: true
find-already-discovered:
loot-tables: falseoptimize-explosions: true кеширует расчёт взрывов — помогает на серверах, где часто взрывают криперы и ТНТ.
cooldown-when-full: true не даёт полной воронке проверять содержимое каждый тик.
treasure-maps — неочевидный источник фризов: поиск структуры для карты сокровищ генерирует чанки синхронно. Если жители у вас торгуют картами массово, этот параметр стоит проверить первым при жалобах на секундные зависания.
paper-global.yml: что смотреть там
proxies:
velocity:
enabled: false
online-mode: true
secret: ''
packet-limiter:
all-packets:
max-packet-rate: 500.0
misc:
max-joins-per-tick: 3
chat-threads:
chat-executor-core-size: -1velocity.enabled включается только при работе за прокси — сборка сети описана в статье про BungeeCord и Velocity.
packet-limiter защищает от флуда пакетами и включён по умолчанию. Снижать порог ниже 500 не стоит — начнёте кикать легитимных игроков с плохим соединением.
max-joins-per-tick ограничивает, сколько игроков может зайти за один тик; по умолчанию 5, лишние не кикаются, а заходят в следующих тиках. Если после рестарта у вас регулярно заходят десятки человек сразу, снизьте до 3 или 2 — массовый заход растянется, и сервер не захлебнётся.
Порядок работы
Paper-конфиг — последний шаг, а не первый:
server.properties— дистанции; разбор в разделе про server.propertiesbukkit.yml— лимиты спавна; разбор в разделе про bukkit.ymlspigot.yml— активация энтити и merge-radius; разбор в разделе про spigot.yml- Paper-конфиги — редстоун, спавнеры, чанки, anti-xray
Проверять эффект надо профилировщиком, а не на глаз: /spark profiler start --timeout 300 в вечерний пик покажет, какая механика съедает тик. Общая методика — в разделе про оптимизацию сервера.
Чего не стоит делать
- Копировать чужой конфиг целиком — параметры сильно зависят от того, что происходит на вашем сервере
- Лезть в
unsupported-settingsбез понимания: там отключение защит от эксплойтов - Включать
engine-mode: 3для anti-xray — экспериментальный режим с известными артефактами - Менять сразу десять значений: эффект станет неотличим от случайных колебаний TPS
Если конфиг вылизан, а тики всё равно проседают в прайм-тайм, дальше упирается процессор — сравнить варианты можно на странице тарифов.