Статья устарела
Содержание статьи может не соответствовать актуальной действительности по причине прекращения поддержки публичной версии ядра Heart.
Если вдруг разработка возобновится - мы уведомим вас об этом в наших каналах связи.
Дисклеймер
Ядро Heart - это по большей сборник чужих патчей, авторство которых никто не пытвется присвоить. Саша Quinowell лишь объединил и немного доработал чужой код и обновляет его до последних версий майнкрафта. Спасибо за проделанную работу команде plasmo, peaches94, kugge, jpenilla, DenWav, MiniDigger и все других контрибьюторам bukkit, spigot, paper, purpur.
Описание
Ядро Heart представляет из себя форк (улучшенную версию) purpur, изначально написанную для майнкрафт сервера Haku!. В нём, кроме прочих плюшек purpur есть такие функции, как:
Линейная система чанков
Альтернативная система хранения чанков, позволяющая хранить чанки быстрее и компактнее.
Документация и инструкция по конвертации карты доступны на странице разработчика.
Подводные камни
Линейная система чанков будет ломать работу плагинов, обращающихся напрямую к файлам регионов, таких как pl3xmap (у таких плагинов, как squaremap, bluemap поддержка есть) {.is-warning}
Настройка
format
По умолчанию: ANVIL
Для использования линейной системы чанков необходимо поменять данное значение на LINEAR
.
compression-level
Определяет уровень сжатия ZSTD в линейной системе чанков (от 1 до 22). Не советую ставить значения больше 10, так намного возрастёт потребление процессора, несмотря на уменьшенное потребление ПЗУ. Рекомендую 1 для небольшого сжатия (лучше ваниллы) и малого потребления ресурсов. Рекомендую 6 для большего сжатия (на ~17% лучше 1), но немного возрастёт количество потребляемых ресурсов.
crash-on-broken-symlink
По умолчанию: true
Если включено отключит сервер, при обнаружении сбоя символьных ссылок.
Асинхронный поиск пути
Описание
Упрощённое представление тика показано на диаграмме ниже. Когда просчитывание пути идёт в сихронном потоке - это увеличивает продолжиительность одного тика, что при значениях выше 50 мс ведёт к падению ТПС.
Если вынести просчитывание пути в асинх, то это позволит просчитать тик быстрее, повышая производительность сервера.
Подводные камни
Ранее с поиском пути в воде замечались затупы в воде и на неполных блоках. Актуальная имеет фиксы этого, но подобные неприятности могут всплыть в процессе эксплуатации. {.is-warning}
Настройка async-path.async-path-processing
enable
Включает асинхронный поиск пути Требудет рестарта для включения!
max-threads
По умолчанию: 0 Определяет сколько потоков может быть использовано для асинхронной обработки путей Если установить данное значение выше доступного количества ядер, то это позволит серверу лучше справлятся с резкими скачками нагрузки энтити.
Математика потоков
Положительное число:
Количество потоков = установленному числу.
Ноль:
Количество потоков = 0 = Количество ядер/4 с округлением в большую сторону.
Отрицательное число:
Количество потоков = -n = Количество ядер - n. Если полученное число будет меньше 1 - будет установленна 1.
keepalive
По умолчанию: 60 Определяет сколько секунд бездействующие потоки держутся “в живых”, когда количество потоков превышает размер пула ядер. Малое значение будет удалять быстро удалять ненужные потоки.
Многопоточный трекер энтити
Чтобы включить функцию - нужно переключить опцию enable-multithreaded-entity-tracker
на true
Данная функция имеет проблемы с работой некоторых плагинов, связанных с энтити. Например: Citizens {.is-warning}
Защита сида
Реализация так называемого Feature Seed от EarthComputer. Добавляет в level.dat новое поле “feature-seed”, состоящее из 1024 битов. Из-за размера его почти невозможно подобрать. По нему генерируются руды, слайм-чанки, структуры и тд, сохраняя ландшафт в неизменном виде. Также это устраняет баги, где 2 различные черты генерации становятся “связанными” - например алмазы и глина.
По умолчанию эта функция отсутсвует в билдах, доступных в панели, для получения билда с этой функцией - пишите Quinowell {.is-warning}