
HammerLib
Библиотека модов для Майнкрафт, содержащая полезный код для разработчиков. Упрощает регистрацию контента, работу с сетью, NBT и рецептами. Необходима для многих модов.
HammerLib - это библиотека модов для Майнкрафт, которая содержит кучу полезного кода для других модов. По сути, это такой набор инструментов, который разработчики используют, чтобы не изобретать велосипед каждый раз. Если ты видишь мод, которому нужен HammerLib, значит, он использует его возможности для упрощения своей работы.
Что дает эта библиотека
HammerLib решает кучу типичных проблем, с которыми сталкиваются создатели модов. Вместо того чтобы писать однотипный код с нуля, они просто подключают эту библиотеку и получают готовые решения.
Вот что она умеет:
- Простая регистрация контента через аннотации. Для блоков HammerLib автоматически создает BlockItem. Если надо отключить - есть специальные интерфейсы вроде INoItemBlock или ICustomBlockItem.
- Рендер BlockEntity - можно добавить @TileRenderer для кастомного отображения.
- Старые языковые файлы в формате "ключ=значение" вместо JSON. Работает как в старых версиях игры, но нужно вызвать LanguageAdapter.registerMod(MOD_ID) в конструкторе мода.
- Проверка источника мода - библиотека может определить, скачан ли мод с сайтов с рекламой или вирусами, и предупредить об этом.
- Рецепты через Java - событие RegisterRecipesEvent на шине HammerLib.EVENT_BUS позволяет регистрировать крафты кодом, как раньше.
- Теги через Java - событие BuildTagsEvent на той же шине.
- Упрощенная работа с сетью через класс Network и интерфейсы IPacket + INBTPacket. Код пакетов становится интуитивным.
- Обертки для добычи блоков - BlockHarvestAdapter, который работает через теги.
- NBT-сериализация через поля - чтобы не ошибиться в названиях и не забыть написать код сохранения/загрузки.
- Старые обертки TileEntity - TileSyncable и TileSyncableTickable для синхронизации начального состояния и отдельных свойств.
- ContainerAPI для BlockEntities - позволяет обойтись без MenuType, не нужно регистрировать экраны и меню.
- API для получения цветов из текстуры - TexturePixelGetter.getAllColors превращает ItemStack в массив Color.
- Кастомные загрузчики моделей через аннотацию @LoadUnbakedGeometry на IUnbakedGeometry.
И это далеко не всё. Библиотека реально богатая на фичи.
Зачем это нужно
Если ты просто игрок - тебе вряд ли интересно копаться в коде. Но HammerLib часто требуется как зависимость для других модов. Без нее многие интересные моды просто не запустятся. Так что если какой-то мод просит HammerLib - просто скачай его и забудь. Он будет работать в фоне, обеспечивая работу основного мода.
Важно знать
- Библиотеку можно использовать в сборках модов - никаких проблем.
- Можно создавать моды, которые требуют HammerLib, но нельзя встраивать его внутрь себя.
- Перезаливать на другие сайты без ссылки на CurseForge или Modrinth и разрешения автора нельзя.
- Включать эту библиотеку в свой мод тоже нельзя. А вот делать аддоны - можно, но лучше предупредить автора.
Поддерживается только последняя версия Minecraft, для которой есть HammerLib. Просить портировать на старые версии бесполезно - автор сказал "нет".
В общем, HammerLib - это такой must-have для разработчиков и полезная зависимость для игроков. Если видишь его в списке требуемых модов - просто ставь и не парься.
