
UltraLib
UltraLib - ненавязчивая Java-библиотека для разработчиков модов на Fabric. Упрощает работу с JSON, конфигами, кейбиндингами и data-driven фичами без единого миксина.
UltraLib - это библиотека для Майнкрафт, которая нужна не игрокам, а разработчикам модов. Если вы просто ищете, что поставить в сборку - этот мод вам ничего не даст в игре. А вот если вы пишете свои моды на Fabric и устали копипастить одни и те же утилиты из проекта в проект - тут есть на что посмотреть.
Главная фишка UltraLib в том, что она полностью ненавязчивая. Никаких миксинов, никаких хуков в чужой код, никакой магии. Это просто набор полезных Java-классов, которые вы подключаете и используете. Из-за отказа от миксинов библиотека совместима практически с чем угодно - конфликтовать ей попросту не с чем. Работает и на клиенте, и на сервере, поддерживает Minecraft 1.20.x и свежие версии вплоть до 1.21.9-1.21.10.
Что внутри
Набор утилит тут небольшой, но каждая решает конкретную боль мододела:
OptionalObject- удобный парсинг опциональных данных из JSON. Если вы писали датадрайвен-фичи, то знаете, как надоедает проверять каждое поле на null вручную.LatchedKeyBinding- кейбиндинги, которые срабатывают ровно один раз за нажатие. В ванильке с этим вечно костыли, а тут готовое решение.SortedList- сортировка списка по весу. Полезно, когда у вас куча фич от разных модов и нужно определить порядок их выполнения.UltraConfig- крайне легковесная система конфигов. Не монстр уровня Cloth Config, а простая штука для базовых нужд.SimpleDataLoader,RunnableDataLoader,DetachedRunableDataLoader- три варианта загрузки JSON-данных под разные сценарии. Датапаки, кастомные ресурсы, всё такое.Creator- по сутиFunctionс реестром, позволяет превращать один объект в другой по указанному id. Основной инструмент для data-driven фич, когда контент описывается в JSON, а не хардкодом.Lists- перепаковка класса из Apache Commons, потому что на клиенте он по умолчанию недоступен. Мелочь, а приятно.
UltraDRY - меньше бойлерплейта
Отдельно стоит упомянуть набор утилит UltraDRY. Идея простая: не повторяйся (Don't Repeat Yourself). Подключается одной строчкой в client init:
UltraLib.registerPackage(this.getClass(), MOD_ID);
После этого получаете быстрый доступ к часто нужным вещам:
UltraLib.id(String id)- идентификаторы с префиксом вашего мода, без ручной подстановки MOD_ID каждый раз.UltraLib.getText(String title, String... paths)- получение переводов.UltraLib.log()- готовый логгер.
Звучит как мелочь, но когда в моде сотни вызовов Identifier.of(MOD_ID, "что-то") - экономия времени и читабельность кода ощутимые.
Кому это нужно
Если честно - проект нишевый. Обычному игроку ставить UltraLib в сборку модов бессмысленно, если только какой-то мод не требует его как зависимость. У библиотеки порядка 17 тысяч загрузок, что для девелоперской утилиты вполне неплохо, но это не Sodium и не Fabric API по масштабу.
А вот для разработчиков, особенно тех, кто делает data-driven моды с кучей JSON-контента, UltraLib может сэкономить прилично времени. Вместо того чтобы писать свои велосипеды для загрузки данных, конфигов и кейбиндов - берёте готовое и сосредотачиваетесь на самой фиче.
Важный нюанс: автор называет эту библиотеку предпоследней (penultimate), так что не ждите, что она покроет абсолютно все нужды. Это лёгкий инструментарий, а не фреймворк. Для сложных конфигов лучше смотреть в сторону Cloth Config или YACL, а для серьёзной манипуляции игрой без миксинов всё равно не обойтись. Но в своей нише - быстрые утилиты без головной боли с совместимостью - UltraLib справляется хорошо.
Скачать UltraLib можно для Fabric под Minecraft 1.20 и 1.21. Если вы мододел и собираетесь делать что-то с JSON-контентом - гляньте, возможно, половину утилит вам писать уже не придётся.
Как поиграть с друзьями с модом UltraLib?
Мод UltraLib куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода UltraLib будет готов за пару минут - BungeeHost сделает всё за вас.
