
Tetrachord Lib
Легковесная библиотека для Майнкрафт, предоставляющая структуры данных KD Tree и Segment Tree для оптимизации пространственных запросов и обновлений. Помогает разработчикам модов создавать более эффективные механики без лишней нагрузки на сервер.
Tetrachord Lib - это библиотечный мод для Майнкрафт, который решает проблему неэффективных переборов в пространственных механиках. Если вы когда-нибудь сталкивались с лагами от модов, которые проверяют каждый блок вокруг игрока или ищут ближайшие объекты - скорее всего, там использовался тупой перебор. Tetrachord Lib предлагает умные структуры данных: KD-деревья и сегментные деревья, которые ускоряют такие операции в разы.
Что это и зачем нужно
В ванильном Minecraft многие механики работают на примитивных проверках - например, чтобы не спаунились мобы возле костра, мод может каждые несколько тиков проверять все блоки в радиусе. На сервере с десятками таких механик mspt (миллисекунды на тик) растёт, игра начинает тормозить. Tetrachord Lib даёт разработчикам готовые инструменты для быстрых пространственных запросов:
- KD Tree - для поиска ближайших объектов в 2D и 3D (например, найти ближайший факел или моба).
- Segment Tree - для массовых обновлений и запросов в диапазоне (например, изменить все блоки в области или посчитать количество руды рядом).
Библиотека легковесная и не добавляет лишних механик сама по себе - она просто даёт API, который другие моды могут использовать как зависимость.
Примеры из реальных модов
Разработчики уже используют Tetrachord Lib для оптимизации. Вот два показательных примера:
No Hostiles Around Campfire
Мод No Hostiles Around Campfire от Serilum запрещает спаун мобов возле зажжённых костров. В оригинальной реализации он тупо перебирал блоки в радиусе - на сервере это давало высокий mspt. С KD Tree проверка стала почти мгновенной: библиотека хранит позиции костров и быстро отвечает, находится ли точка в зоне действия.
Ore Blocks near Beacon Increase Xp Drop
Другой сценарий - мод, где добыча руды возле маяка даёт дополнительный опыт. Нужно быстро подсчитать количество руды каждого типа вокруг добытого блока. С Segment Tree такие запросы выполняются за логарифмическое время вместо линейного. Вот как выглядит зависимость радиуса и веса руды:
| Тип руды | Copper | Iron | Gold | Diamond | Netherite |
|---|---|---|---|---|---|
| Радиус | 5x5 | 9x9 | 13x13 | 17x17 | 19x19 |
| Вес | 1 | 1 | 1 | 2 | 3 |
Без Tetrachord Lib пришлось бы каждый раз сканировать все блоки в огромном кубе - а это сотни тысяч блоков за один клик. С библиотекой всё работает плавно.
Для разработчиков
Если вы пишете мод и вам нужно:
- быстро находить ближайшие объекты (мобы, игроки, блоки),
- обновлять или запрашивать данные в прямоугольной/кубической области,
- оптимизировать механики, связанные с расстоянием,
просто добавьте Tetrachord Lib как зависимость в ваш проект. Мод совместим с Fabric и Forge (актуальные версии Minecraft 1.19-1.21). Никаких лишних настроек - всё работает из коробки.
Производительность
Разработчики провели тесты с профайлером Spark. Результаты показали, что использование KD Tree вместо перебора снижает mspt в 10-50 раз в зависимости от сценария. Segment Tree тоже даёт огромный прирост при работе с большими областями. Если ваш сервер тормозит из-за модов с пространственными проверками - скорее всего, проблема решается именно этой библиотекой.
Итог
Tetrachord Lib - незаметный, но мощный инструмент для создателей модов. Он не добавляет контента в игру, но делает её работу быстрее и стабильнее. Если вы собираете сборку или пишете свой мод - обратите внимание на проекты, которые используют эту библиотеку как зависимость. Скачайте Tetrachord Lib и дайте вашим механикам настоящую оптимизацию.
