Moonlight Lib
📖 О библиотеке 📖
Ранее известная как Selene Library, Moonlight Lib — это набор специализированных утилит и общего кода, который используется в моих модах.
Библиотека включает в себя высокоспециализированные функции, такие как динамическая генерация ассетов, 2 новых реестра данных, система динамической регистрации, а также обычные помощники для мульти-лоадера и обёртки для разработки под Fabric и Forge.
🛠️ Возможности 🛠️
Здесь представлены наиболее важные возможности библиотеки. Если вы разработчик, планирующий её использовать, этот раздел для вас!
Основная документация находится здесь:
Чтобы импортировать эту библиотеку, перейдите в раздел файлов здесь и нажмите "copy gradle line". Затем вставьте эту строку в ваш файл build.gradle.
🎨 Динамические ассеты
Moonlight позволяет динамически генерировать любые ассеты как для датапаков, так и для ресурспаков. В частности, мод содержит обширный API для создания динамических текстур с такими инструментами, как извлечение палитры, обрезка, изменение формы изображений, автоматическое перекрашивание и многое другое.
🌍 Утилиты для мульти-лоадера
Этот набор утилит стремится быть максимально простым, обычно полагаясь на статические вспомогательные функции вместо аннотаций или других практик ООП, и в основном эмулирует поведение Forge, просто оборачивая его вспомогательными функциями. Для Fabric вызывается или реализуется эквивалентное поведение, если оно недоступно. Некоторые ключевые моменты включают отложенную регистрацию, общую настройку и другое.
Основное внимание уделяется простоте, поэтому большинство важных вызовов разделены между четырьмя основными классами API.
Это: PlatHelper, ClientHelper, RegHelper и ForgeHelper.
Для конфигураций и сетевого взаимодействия основными классами являются ConfigBuilder и ChannelHandler.
Конфигурации, в частности, имеют дополнительные функции, такие как возможность использования Codecs, ранняя загрузка или автоматическая синхронизация с клиентами.
📒 Динамическая регистрация
Это включает новую систему (BlockSetAPI), которая позволяет динамически обнаруживать "наборы блоков" сразу после регистрации всех блоков и динамически регистрировать новые записи, зависящие от них. Пример — использование встроенных реестров WoodTypeRegistry или LeavesTypeRegistry, двух наборов блоков, которые будут динамически заполняться всеми установленными типами древесины и листьев из любых модов, позволяя регистрировать ваши деревянные предметы для всех существующих типов древесины.
🧙♂️ Разные утилиты
- Block Color API: Набор утилит, позволяющих определить произвольный DyeColor для любого модифицированного блока, а также получить эквивалентный блок другого цвета. Работает динамически для любого модифицированного блока или предмета.
- Пользовательские маркеры карт: Полная система, позволяющая легко реализовывать и добавлять украшения и маркеры на карты, а также контролировать каждый аспект их отображения. Также позволяет хранить простые данные внутри карт, предлагая несколько хуков для их использования, например, в подсказках к предметам. Система также предлагает простую реализацию на основе данных, что означает возможность легко регистрировать новые маркеры с помощью датапаков!
- Глобальная папка датапаков и папка загрузчика моделей: Соответственно в moonlight-global-datapacks и /assets/models/special_models.
- Динамический ИИ жителей: Вспомогательная система для простого и динамического добавления задач и изменения расписаний жителей совместимым образом без переопределения всего существующего ИИ. Также позволяет правильно добавлять типы памяти.
- Пользовательские анимации от первого и третьего лица: Позволяет моддерам реализовать простой интерфейс в своих предметах, чтобы они могли иметь пользовательские анимации от третьего и первого лица (как у арбалетов). Включает простые и удобные интерфейсы, которые позволяют контролировать анимации от первого и третьего лица, а также обратный вызов для отрисовки самого предмета (аналогично подзорной трубе) непосредственно в классе предмета.
- Триггеры достижений для точильного камня: Мод добавляет пользовательский триггер, который вызывается, когда предмет проходит через точильный камень. Его можно использовать в достижениях ваших модов.
- Система Soft fluid: Полностью управляемая данными пользовательская виртуальная система жидкостей, построенная поверх системы Forge и предназначенная для лучшего соответствия ванильному Minecraft. Её основная особенность — возможность иметь несколько контейнеров для жидкостей, таких как бутылки, миски и вёдра, а также поддержка рагу и напитков, которые можно употреблять непосредственно из резервуара с жидкостью. В отличие от системы жидкостей Forge, она имеет базовую единицу измерения в 1 бутылку Minecraft (250 мб Forge). Система также автоматически генерирует все необходимые жидкости для уже зарегистрированных жидкостей Forge и позволяет пользователю легко переопределять или дополнять их. Жидкости являются виртуальными, поэтому могут существовать только в специальных модифицированных контейнерах для них.
🍩 Пользовательские запечённые модели
API для создания собственных моделей и загрузчиков моделей, включая утилиты для работы с квадами (Quad Utils).
🌽 Пользовательские сделки с жителями
Используя папку датапака `moonlight/villager_trades`, вы сможете добавлять новые пользовательские сделки для любого жителя.





