MixinBooter
Позволяет любым миксинам, работающим с модами, без усилий функционировать на версиях 1.8 – 1.12.2
Текущая версия Mixin: CleanMix 0.2.9 от CleanroomMC, форк SpongePowered/Fabric Mixin (0.8.7)
Текущая версия MixinExtra: 0.5.4
Псевдо-список изменений:
Начиная с версии 4.2, API MixinBooter изменился, и все моды, использующие миксины, обязаны зависеть от MixinBooter, даже те, что внедряются в классы ванильной игры, Forge или библиотек. Это необходимо для предотвращения несоответствий версий миксинов, приводящих к вылетам при попытке реализации модифицированных миксинов (смотрим на вас, VanillaFix). Спасибо @embeddedt за рекомендацию и помощь во внедрении этого изменения!
Начиная с версии 5.0, MixinExtras от @LlamaLad7 включен в сборку. Доступен для использования разработчиками.
Начиная с версии 8.0, MixinBooter работает на версиях от 1.8 до 1.12.2. Одна сборка работает со всеми этими версиями! (TODO: поддержка LiteLoader?)
Начиная с версии 8.4, MixinBooter активно пытается быть совместимым с SpongeForge
Начиная с версии 9.2, MixinBooter восстанавливает старую аннотацию MixinLoader для использования на 1.8.x.
Начиная с версии 10.0, MixinBooter следует за Mixin 0.8.7
Начиная с версии 11.0, MixinBooter построен на CleanMix. В рамках усилий по созданию унифицированного бэкенда с Cleanroom.
- Больше не нужно самостоятельно объявлять зависимости для процессора аннотаций.
- Также добавлен конфигурационный файл (
config/mixinbooter.cfg) для внесения конфигураций миксинов в черный список и переключения опций отладки. - Выделенный журнал миксинов
logs/mixinbooter.logс возможностью отслеживания загрузки классов для точной отладки. - Позволяет традиционным записям манифеста
MixinConfig+MixinConnectorполностью участвовать в экосистеме. - Обнаружение модов для владельцев миксинов, улучшенные проверки
isModLoaded. - Подавляет предупреждения Forge о поврежденном zip.
- Поэтапно отказались от "фаз" миксинов.
Для разработчиков ~ Начало работы:
- Добавьте репозиторий CleanroomMC и укажите зависимость от Maven-артефакта MixinBooter:
repositories {
maven {
url 'https://maven.cleanroommc.com'
}
}
dependencies {
def mixin = 'zone.rong:mixinbooter:11.0'
implementation (mixin) {
transitive = false
}
annotationProcessor mixin
// RetroFuturaGradle для генерации refmap:
modUtils.enableMixins(mixin)
// modUtils.enableMixins(mixin, 'mod_id.mixins.refmap.json') << добавьте имя refmap вторым аргументом (необязательно)
}- Выберите способ регистрации ваших конфигураций миксинов. MixinBooter поддерживает множество подходов:
(Начиная с версии 11.0, разделение на ранние/поздние загрузчики отсутствует, поэтому IEarly/ILateMixinLoaders устарели)
- Атрибут манифеста
MixinConfigs: класс загрузчика не требуется. Добавьте разделенный пробелами список имен ваших конфигурационных файлов миксинов в манифест вашего jar-файла. MixinBooter считывает их непосредственно из манифеста jar и регистрирует. - Атрибут манифеста
MixinConnector: регистрация конфигураций программно. Укажите класс, реализующийorg.spongepowered.asm.mixin.connect.IMixinConnector. Его методconnect()вызывается во время загрузки, где вы самостоятельно вызываетеMixins.addConfiguration(...).
Оба атрибута манифеста устанавливаются в вашей задаче jar:
jar {
manifest {
attributes(
'MixinConfigs': 'mixins.mymod.json',
'MixinConnector': 'com.example.mymod.MyMixinConnector'
)
}
}public class MyMixinConnector implements IMixinConnector {
@Override
public void connect() {
// Проверить, загружен ли мод, перед регистрацией?
// Возможно с помощью zone.rong.mixinbooter.service.ModDiscoverer.isModPresent(String modId)
Mixins.addConfiguration("mixins.mymod.json");
}
}