Оптимизация сервера Minecraft (Высокие версии 1.16.х - 1.20.х)
Данная статья актуальна для серверов на новых версиях.
Все изменения конфигов следует производить осмысленно и специально для каждого сервера.
Если Вы не испытываете проблем с производительностью - не трогайте стандартные конфиги.
Вы просто сломаете ванильный игровой процесс и не получите ничего взамен. Пожалуйста, читайте описание под каждую настройку и не меняйте ничего вслепую.
Важные моменты
Не используйте слитый софт:
Мало кто будет выкладывать платные плагины бесплатно без подвоха.
Нет денег на платные плагины - делайте сервер с бесплатными.
Их множество в открытом доступе и Вы точно найдете что-то для себя.
Правильно выбирайте версию:
Чем выше версия для обычного выживания - тем лучше.
Не смотрите на популярные проекты с версиями 1.12.2 и 1.16.5.
Их онлайн держится на старых игроках с донатом, ботах и тех, кто пойдет куда угодно играть из-за рекламы в тик-токе. К тому же, на старых версиях
существуют критические уязвимости, которые отсутствуют на новых версиях.
Не используйте дата-паки с функциями:
Большинство дата-паков непригодны для сервера. Авторы делают
их прежде всего для одиночной игры, где Ваш процессор выполняет
функции датапака только для Вас. На большинство популярных дата-паков
давно существуют аналоги в виде более оптимизированных плагинов.
Делайте резервное копирование данных (бэкапы):
Никто не знает, что с Вашим проектом может случиться завтра.
Поэтому, крайне желательно делать ежедневные бэкапы в облако.
Прогрузка карты
Генерация чанков - достаточно неприятный процесс для сервера, особенно на 1.16+.
Чтобы избежать лагов при генерации чанков игроками, крайне рекомендуется их прогрузить.
Теперь пишем команды:
/chunky radius кол-во_блоков_в_каждую_сторону
Например, /chunky radius 5000. Так у нас получится карта на 10к на 10к блоков.
/chunky world мир_который_нужно_прогрузить
Например, /chunky world world. Так мы выделим Верхний мир для прогрузки.
Желательно прогружать дополнительные миры (Нижний, Край).
Также установим ванильный барьер:
Заходим в игру, телепортируемся в нужный мир и пишем команду:
/worldborder set умножаем_число_из_первой_команды_на_два
Например, в команде /chunky radius мы указали 5000. Значит тут указываем 10000.
И, наконец, начинаем прогрузку карты командой:
/chunky start
Данный процесс займет некоторое время и некоторые гигабайты в Вашем хранилище.
На нормальном хостинге и при небольшом онлайне - лагов быть не должно.
Смотрим конфиги
network-compression-threshold: 128/256/512
Наименьшее значение означает большее сжатие трафика и увеличение нагрузки на процессор,
но положительно сказывается на игроках с плохим интернетом.
Ставьте наибольшее значение, если у Вас ограниченный месячный трафик.
enforce-secure-profile=false
Выключает новомодную (1.19.1) проверку сообщений в чате.
entity-broadcast-range-percentage=75/100
Определяет насколько близко игрок должен быть к сущностям, чтобы
сервер отправил их ему на рендер. Ставьте наименьшее значение, если Ваш
сервер сильно нагружен уникальными сущностями (например, на стойках для брони).
max-tick-time=-1
Указывает время (в тиках) через которое сервер будет автоматически выключен
при сильном залаге. Частично заменяется WatchDog'ом из Paper,
поэтому может быть выключено.
use-native-transport=true
Включает оптимизированную отправку пакетов.
Ставьте true только если сервер стоит на Linux.
При создании модового сервера - лучше оставить false.
view-distance: 2-4
Некий официальный аналог no-tick чанков из Paper который появился в официальном ядре недавно.
Данная настройка сильно влияет на игровой процесс!
simulation-distance: 4-6
Чанки рядом с игроком, в которых будет происходить жизнь. Слишком маленькие значения ломают фермы.
Данная настройка сильно влияет на игровой процесс!
idle-timeout: 10-20
Устанавливает время, после которого бездействующий игрок будет считаться сервером в AFK.
На Minecraft Wiki указано, что данное значение исчисляется в минутах.
allow-flight: true
Плохой пример реализации "античита", встроенный в ядро. Установите отдельный плагин на античит.
snooper-enabled: false
Выключает отправку некоторых данных в Mojang.
Нельзя выключить в новых версиях.
sync-chunk-writes=false
Выключает синхронную (однопоточную) генерацию чанков.
Автоматически выключено в Paper и его форках, имеет смысл изменять значение только если у Вас сервер на Fabric.
query-plugins: false
Выключает возможность узнать плагины сервера через сторонние ресурсы.
spawn-limits:
monsters: 20 #Враждебные мобы.
animals: 8 #Мирные мобы.
water-animals: 3 #Водные существа (спруты, etc)
water-ambient: 1 #Мелкие рыбы
axolotls: 3 #Аксолотли
water-underground-creature: 3 #Подземные спруты
ambient: 1 #Летучая мышь
Означает лимит спавна определенной группы сущностей.
Данная настройка сильно влияет на игровой процесс!
period-in-ticks: 300
Время, через которое сервер выгрузит неактивный чанк из памяти. В тиках.
ticks-per:
animal-spawns: 400/420
monster-spawn: 10/12
water-spawns: 600/800
axolotl-spawns: 400/600
water-ambient-ambient: 600/800
water-underground-creature-spawns: 400/600
ambient-spawns: 1800/2200
Время, через которое сервер будет спавнить указанную группу сущностей. В тиках.
Если Вам нужен более ванильный геймплей - ставьте первые числа,
если нужно больше производительности - вторые.
autosave: 6000/16000
Автоматическое сохранение данных сервера. В тиках.
Если сервер работает нестабильно и постоянно падает - не трогайте.
timings:
enabled: false
verbose: false
Выключает автоматический сбор таймингов после старта сервера.
В новых версиях форка Purpur тайминги удалены.
use-rgb-for-named-text-colors: false
Позволяет отображать цветную консоль сервера.
max-joins-per-tick: 1
Ограничивает максимальное количество возможных заходов игроков до одного в один тик.
fix-entity-position-desync: true
Исправляет баг синхронизации лежащего предмета у игрока и сервера.
use-dimension-type-for-custom-spawners: trueuse-alternative-luck-formula: true
despawn-ranges:
ambient:
hard: 56
soft: 30
axolotls:
hard: 56
soft: 30
creature:
hard: 56
soft: 30
misc:
hard: 56
soft: 30
monster:
hard: 56
soft: 30
underground_water_creature:
hard: 56
soft: 30
water_ambient:
hard: 56
soft: 30
water_creature:
hard: 56
soft: 30
parrots-are-unaffected-by-player-movement: true
Попугаи не будут сбрасываться с плеча игрока слишком часто.
item-frame-cursor-limit: 64
Лимит отметок на карте.
zombies-target-turtle-eggs: false
Зомби не будут агрессировать на яйца черепах.
Убивает все фермы, построенные на этом принципе.
Данная настройка сильно влияет на игровой процесс!
item-frame-cursor-update-interval: 20
Отображение игрока на карте будет обновляться реже.
disable-end-credits: true
Выключает показ титров игроку при первом прыжке в портал Края, ведущий в Верхний мир.
fix-items-merging-through-walls: true
Исправляет возможность предметам стакаться через стены.
keep-spawn-loaded: false
Выключаем постоянную прогрузку чанков спавна.
max-entity-collisions: 2
Именно столько сущностей сможет толкаться если они слишком близко.
Негативно влияет на плагины, связанные с стойками для брони
max-auto-save-chunks-per-tick: 8
Определяет сколько чанков в тик максимум сервер сможет сохранять.
Чем больше онлайна - тем больше должно быть значение. Проблема тут в том, что указанное в статье значение в 8 чанков подойдет для сервера в 40-50 человек МАКСИМУМ (при условии низкой прорисовки, в 5-6 чанков). Далее могут возникнуть проблемы и фризы, т.к. те чанки, которые ядро не успевает сохранить за период auto-save-interval оно сохраняет сразу в 1 момент.
mob-spawner: 4-8
Время в тиках, раз в которое спавнер будет спавнить сущностей.
disable-chest-cat-detection: true
Выключает котам возможность искать сундуки. Оптимизация!
disable-relative-projectile-velocity: true
redstone-implementation: ALTERNATE_CURRENT
Позволяет серверу использовать альтернативную систему редстоуна
(практически нет разницы с ванильной в механиках).
prevent-moving-into-unloaded-chunks: true
Запрещает игроку быстро грузить непрогруженные чанки,
телепортируя его назад, пока чанк не будет создан.
update-pathfinding-on-block-update: false
armor-stands:
do-collision-entity-lookups: false
tick: false
Выключает бессмысленный тик стоек для брони. Если у Вас есть плагины на уникальных сущностей (ModelEngine, ItemsAdder, Oraxen) - не изменяйте значение на фальш.
hopper:
cooldown-when-full: true
disable-move-event: true
ignore-occluding-blocks: true
Весомые патчи для оптимизации одного из самых жрущих - воронок.
Естественно влияет на ванильность, но дает нехилый прирост производительности.
Может негативно влиять на другие плагины, но это уже проблема разработчика плагина.
non-player-arrow-despawn-rate: 5
creative-arrow-despawn-rate: 5
Влияет на скорость удаления стрел игроков в креативе и мобов. В тиках.
treasure-maps:
find-already-discovered:loot-tables: true
villager-trade: true
По-сути - полностью отключает карты клада на сервере. Ибо они способны даже положить сервер на последних версиях и никто это исправлять естественно не собирается.
grass-spread: 2-8
Определяет раз во сколько тиков трава на блоках будет расти на следующий блок.
nether-ceiling-void-damage-height: 127
Запрещает игрокам вылезать на крышу Нижнего мира.
Данная настройка сильно влияет на игровой процесс!
container-update-tick-rate: 3
Не рекомендую изменять данное значение при маленьком онлайне (до 30).
Может вызывать баги у игроков с фантомными предметами в инвентаре.
tick-rates:
behavior:
villager:
validatenearbypoi: 60
acquirepoi: 120
sensor:
villager:
secondarypoisensor: 80
nearestbedsensor: 80
villagerbabiessensor: 40
playersensor: 40
nearestlivingentitysensor: 40mob-spawn-range: 3-4
Радиус в чанках от игрока, где будут спавнится мобы.
Данная настройка сильно влияет на игровой процесс!
hanging-tick-frequency: 250
Увеличивает время для проверки декоративных сущностей (стойки/рамки/картины и т.д.).
Может вызывать мелкие визуальные баги у игроков.
restart-on-crash: false
Выключает попытки сервера авто-перезапуститься при краше.
save-user-cache-on-stop-only: true
merge-radius:
item: 4.5 exp: 8.75
Радиусы в блоках, в которых одинаковые предметы/опыт будут соединяться в одну кучу.
netty-threads: 4 / 6
Определяет, сколько потоков процессора сервер будет использовать для обработки трафика.
Указывайте число, которое получится если разделить на четыре все доступные Вам ядра процессора.
arrow-despawn-rate: 300
Время до удаления стрелы, выпущенной игроком. В тиках.
trident-despawn-rate: 600
Время до удаления трезубца, кинутый игроком. В тиках.
hopper-amount: 3-9
hopper-transfer: 8-24
hopper-check: 8-24
По-сути, это полная настройка воронок на сервере.
Нужное значение зависит от количества игроков и воронок на сервере.
Данная настройка сильно влияет на игровой процесс!
nerf-spawner-mobs: true
Полностью убирает AI у мобов со спавнера.
Полезно для больших серверов, где много ферм на спавнерах.
Данная настройка сильно влияет на игровой процесс!
log-villager-deaths: false
Выключает бессмысленное логирование смертей жителей.
log-named-deaths: false
Выключает бессмысленное логирование названных сущностей (под биркой).
max-tnt-per-tick: 10-50
Ограничивает максимальное количество взрывов динамита на тик.
Устанавливайте нужное Вам число в зависимости от типа сервера.
use-alternate-keepalive: true
Позитивно влияет на игроков с плохим интернетом, оттягивая время их кика из-за плохого подключения.
Несовместимо с TCPShield.
dont-send-useless-entity-packets: true
disable-mushroom-updates: true
disable-note-block-updates: truedisable-chorus-plant-updates: true
Выключает обновление нотных блоков, грибов и хорусов.
Лучше не трогать, если сервер больше склонен к ванильной игре, но рекомендуется
к отключению разработчиком LoneDev при использовании ItemsAdder.
max-joins-per-second: truebreeding-delay-ticks: 12000
Увеличивает в два раза ванильный откат размножения животных.
Настраивается отдельно для каждой сущности которую можно кормить.
fix-projectile-looting-transfer: true
система "заставляет" снаряд перенимать уровень зачарования "Грабеж" с оружия игрока, который его выпустил. Это приводит к корректному увеличению дропа.
disable-give-dropping: true
Команда /give не будет выбрасывать предметы из переполненного инвентаря.
fix-stuck-in-portal: true
Не позволяет игроку застрять в портале-ловушке, через время телепортируя его обратно.
disable-drops-on-cramming-death: true
Выключает падение предметов из сущностей при смерти от удушения.
Будет полезно, если игроки строят слишком много ферм, работающих таким образом.
Данная настройка сильно влияет на игровой процесс!
teleport-if-outside-border: true
Телепортирует игрока на нулевые координаты, если он как-то оказался за барьером.
На новых версиях - делает это криво, но игроку лазать за барьером не дает.
arrow:movement-resets-despawn-counter: false
При любом движении уже приземлившейся стрелы её таймер
на исчезновение не будет обновляться.
invulnerable-while-accepting-resource-pack: true
Игрок будет бессмертен пока устанавливает серверный ресурспак.
sleep-ignore-nearby-mobs: true
Игроки смогут лечь на кровать даже рядом с агрессивными мобами.
entities-can-use-portals: false
Данная настройка запретит сущностям использовать порталы.
Т.о. игроки не смогут сделать загрузчик чанков.
Не рекомендую, если игрокам нужно катать мобов по мирам.
logger:
suppress-init-legacy-material-errors: true
suppress-ignored-advancement-warnings: true
suppress-unrecognized-recipe-errors: true
suppress-setblock-in-far-chunk-errors: true
suppress-library-loader: trueПомогает сильно очистить консоль от не несущего смысла текста.
seed:
structure:
buried_treasure: -1 #Случайное число от -2147483648 до 2147483647
mineshaft: -1 #Случайное число от -2147483648 до 2147483647Является отличным дополнением к разделу с сидами в spigot.yml.
Позволяет указать уникальные значения для генерации шахт и кладов на пляжах.
armorstand:
step-height: 0.0 #высота *прыжка* стойки, может быть полезно для сторонних плагинов (например на машинки)
set-name-visible-when-placing-with-custom-name: true #имя переименнованой стойки будет видно при установке
fix-nametags: true #позволяет переименовывать стойки с помощью бирки
can-movement-tick: false #запрещает стойкам двигаться
can-move-in-water: false #запрещает стойкам двигаться по воде
can-move-in-water-over-fence: false #запрещает стойкам двигаться по воде через заборы
place-with-arms-visible: true #стойки будут ставиться с видимыми руками (бедроклайк)По сути, отключает возможность сделать лаг-машины на движущихся стойках для брони.
Читайте комментарии (#).
lagging-threshold: 17.0
Значение TPS, при котором Purpur будет принимать свои меры
для оптимизации, т.к. будет считать сервер лагающим.
observer:
disable-clock: true
Выключает возможность создать цикличный сигнал
редстоуна с помощью двух наблюдателей. Полезно серверу, но не игрокам.
dolphin:
disable-treasure-searching: true #Дельфины не будут искать сокровища. snow_golem:
leave-trail-when-ridden: false #Снежные големы не будут оставлять за собой след снега.
min-shoot-interval-ticks: 300 #Снежные големы будут стрелять раз в 10 секунд, вместо раза в секунду.
max-shoot-interval-ticks: 300 squid:
immune-to-EAR: falseСпрут будет подчиняться параметрам entity_activation_range из spigot.yml.
spider:
can-climb-world-border: falseПауки не смогут лазать по границе мира.
villager:
brain-ticks: 32
use-brain-ticks-only-when-lagging: true #Житель будет активничать только раз в 32 тика при значении ТПС ниже чем в lagging-threshold.
breeding-delay-ticks: 12000
allow-trading: true #Если значение false - жители не будут торговать с игроком.
lobotomize:
enabled: true
check-interval: 100
display-trade-item: false #Отключает отображение предмета для продажи. Оптимизация.
spawn-iron-golem: #Лимит количественного спавна железных големов на определенный радиус.
radius: 5
limit: 5Настройка жителей. Читайте комментарии (#).
zombie_villager:
curing_time:
min: 1300
max: 3000
cure:
enabled: true #Если значение false - выключает возможность исцелить зомби-жителя.Настройка скорости исцеления зомби-жителя.
Ради удобства игроков и меньшего держания агрессивного моба в памяти сервера.
zombie:
aggressive-towards-villager-when-lagging: falseЗомби не будут агрессировать на жителей при значении ТПС ниже, чем указано в lagging-threshold.
entity_timeouts: SNOWBALL: 200 EGG: 200 LLAMA_SPIT: 40 FIREBALL: 100 DRAGON_FIREBALL: 100
max-loads-per-projectile: 4-6
Указывает, сколько любой снаряд может загрузить чанков за время своего существования.
Полезно, но может вызывать застревающие в чанках трезубцы/стрелы и их подобных.
start-distance: 6-8
Указывает, насколько далеко сущность должна находится от игрока, чтобы DAB начал работать.
max-tick-freq: 35-40
Указывает, раз в сколько тиков будут обновляться самые дальние (настройка выше) от игрока
сущности. Может быть крайне полезно, но очень негативно влияет на различные фермы.
activation-dist-mod: 7
Указывает, насколько расстояние влияет на тик сущностей. 7 - оптимальное значение
Отлично поработали! Теперь ваш сервер летает. Мы настроили ядро, оптимизировали параметры и исправили ключевые моменты. Присоединяйтесь к нашему комьюнити — здесь всегда поможем с дальнейшей настройкой. Делитесь успехами и развивайте свой проект вместе с нами! Удачи! 🚀