Статья устарела

Содержание статьи может не соответствовать актуальной действительности по причине прекращения поддержки публичной версии ядра 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), но немного возрастёт количество потребляемых ресурсов.

По умолчанию: 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}