跳到正文

MixinBooter

适用于 1.8 - 1.12.2 的 Mixin 前置库。

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

MixinBooter

让所有适用于模组的 Mixin 都能轻松运行在 1.8 – 1.12.2 上

  • 当前 MixinExtra 版本:0.5.4

伪更新日志:

  • 从 4.2 版本开始,MixinBooter 的 API 发生了变化,所有使用 Mixin 的模组都建议依赖 MixinBooter,即使这些模组只是将 Mixin 注入原版、Forge 或前置库类。这样可以避免 Mixin 版本不匹配导致模组在尝试实现模组 Mixin 时崩溃(说的就是你,VanillaFix)。感谢 @embeddedt 的建议以及对我引入此项改动的帮助!
  • 从 8.0 版本开始,MixinBooter 现在可以运行在 1.8 – 1.12.2 上。一个构建版本即可适用于所有这些版本!(待办:支持 LiteLoader?)
  • 从 8.4 版本开始,MixinBooter 会主动尝试与 SpongeForge 兼容
  • 从 9.2 版本开始,MixinBooter 为 1.8.x 的使用场景重新启用了旧版的 MixinLoader 注解。
  • 从 10.0 版本开始,MixinBooter 遵循 Mixin 0.8.7
  • 从 11.0 版本开始,MixinBooter 基于 CleanMix 构建,旨在创建一个与 Cleanroom 统一的后端。
  • 不再需要自行声明注解处理器的依赖。
  • 新增配置文件(config/mixinbooter.cfg),用于将 Mixin 配置列入黑名单以及切换调试选项
  • 专用的 logs/mixinbooter.log Mixin 日志。支持跟踪类加载,以便进行精确调试。
  • 允许传统的 MixinConfig + MixinConnector 清单属性条目完全参与整个生态系统
  • 支持发现 Mixin 所属模组,并改进 isModLoaded 检查
  • 抑制 Forge 的损坏压缩包警告
  • 逐步淘汰 Mixin“阶段”

开发者 ~ 开始使用:

  1. 添加 CleanroomMC 的仓库,并依赖 MixinBooter 的 Maven 条目:
repositories {
    maven {
        url 'https://maven.cleanroommc.com'
    }
}

dependencies {
    def mixin = 'zone.rong:mixinbooter:11.0'
    
    implementation (mixin) {
        transitive = false
    }
    annotationProcessor mixin

    // RetroFuturaGradle for refmap generation:
    modUtils.enableMixins(mixin)
    // modUtils.enableMixins(mixin, 'mod_id.mixins.refmap.json') << add refmap name as 2nd arg (optional)
}
  1. 选择注册 Mixin 配置的方式。MixinBooter 支持多种注册方式:

(从 11.0 版本开始,不再区分早期/后期阶段,因此 IEarlyMixinLoaders/ILateMixinLoaders 已弃用)

  • MixinConfigs 清单属性:无需加载器类。将你的 Mixin 配置名称以空格分隔的列表形式添加到 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() {
        // Check if mod is loaded before registering?
        // Possible with zone.rong.mixinbooter.service.ModDiscoverer.isModPresent(String modId)
        Mixins.addConfiguration("mixins.mymod.json");
    }
    
}

评论

登录后评论和评分

Rongmario 的其他作品

查看全部 →