FermiumBooter — это утилита для модов mixin, позволяющая разработчикам загружать mixins как на ранних, так и на поздних этапах, что даёт возможность модифицировать классы, которые в обычных условиях изменить невозможно.
Текущие функции включают:
- Постановка mixins в очередь для применения на ранних и поздних этапах, позволяющая модифицировать классы Vanilla/Forge, а также классы модов
- Система аннотаций @MixinConfig, расширяющая систему Forge @Config, для автоматической постановки mixin в очередь на основе переключателей конфигурации
- Опциональная обработка совместимости через систему аннотаций конфигурации, позволяющая разработчикам определять необходимые/несовместимые моды для конкретных mixins
- Логируемые предупреждения при неудачных проверках совместимости mixin, использующего систему аннотаций конфигурации
- Опциональное принудительное отключение mixin при неудачных проверках совместимости mixin, использующего систему аннотаций конфигурации
- Отображение предупреждений в игре (с возможностью отключения) при неудачных проверках совместимости mixins, использующих систему аннотаций конфигурации
- Включение/отключение mixins в очереди до применения с использованием Supplier, предоставляющее разработчику контроль над опциональными mixins
- Вспомогательный метод для проверки наличия ModID, аналогичный Loader.isModLoaded(), но применимый во время постановки mixin в очередь/раннего применения mixin, в отличие от Loader.isModLoaded()
- Запрет применения других mixins FermiumBooter, поставленных в очередь, для целей тестирования или настройки
- Shadows Mixin 0.8.7 и MixinExtras 0.4.1
Для использования разработчиками:
В вашем IFMLLoadingPlugin init, вместо "Mixins.addConfiguration("mixinConfigName")", используйте "FermiumRegistryAPI.enqueueMixin("mixinConfigName")".
Если вы регистрируете его как поздно загружаемый mixin, используйте "FermiumRegistryAPI.enqueueMixin(true, "mixinConfigName")".
Это всё, что требуется, и FermiumBooter позаботится об остальном.
Для дополнительных утилит, как описано ранее, всё документировано в коде с объяснениями использования и назначения.
Если у вас есть какие-либо проблемы/предложения/запросы, пожалуйста, опубликуйте их в трекере проблем на Github, ссылка на который приведена выше.
