
启动参数:--add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens java.base/java.util.jar=ALL-UNNAMED -javaagent:"C:\Users\Administrator\AppData\Roaming.minecraft\MixinConflictCleaner3.0uk.jar"这是一款Java Agent 形式的 Minecraft Mod 跨平台Mixin冲突清理工具,圈内常简称 MixinCleaner,专门解决 Forge / NeoForge / Fabric 三平台混装模组时,跨加载器Mixin引发崩溃的经典问题。
一、核心背景(MC模组痛点)
很多开源模组会采用双平台打包:同一个jar同时内置 Forge、NeoForge、Fabric 两套Mixin字节码。 比如一个jar同时带有 forge/mixin/** 和 neoforge/mixin/** 。 当你在 NeoForge 端加载这个模组时,Forge 的Mixin类依然会被JVM加载,两种平台的Mixin实现不兼容,直接触发: MixinApplyError 、类转换冲突、启动闪退、随机崩溃。 这个工具就是用来干掉“不属于当前加载器”的多余Mixin代码。
二、程序类型与运行方式
1. 载体:Java Instrumentation Agent(premain) 不是普通Mod,启动游戏时通过JVM参数 -javaagent:MixinConflictCleaner.jar 挂载,早于所有模组、早于Mixin库启动。 2. 支持Java8 / Java17;MC版本锁定 1.17.0 ~ 1.21.0。 3. 目标平台: FORGE / NEOFORGE / FABRIC 。
三、两大工作机制(双防线)
防线1:启动时静态扫描Jar(预处理)
游戏启动 premain 阶段:
1. 遍历 mods/ 文件夹所有 .jar ;同时开启文件夹监控(新增mod实时检测) 2. ModJarAnalyzer 分析每个模组Jar:
-
读取 mods.toml / fabric.mod.json ,识别模组原生平台(Forge/NeoForge/Fabric)
-
检测是否包含双平台内容(同时存在Forge+NeoForge标记)
-
读取Manifest查找 MixinExtras 版本,识别已知冲突版本
-
判断MC版本是否和目标版本不匹配 3. 触发冲突判定后调用 stripForeignLoaderContent() : 复制出新Jar,删除不属于当前目标加载器的Mixin相关class
-
目标平台=NeoForge → 删除 forge/mixin/* 、 mixinextras-forge 相关类
-
目标平台=Forge → 删除 neoforge/mixin/* 、 mixinextras-neoforge
-
目标平台=Fabric → 删除 Forge/NeoForge 两套Mixin 4. 校验清理后的Jar完整性,合法则替换原mod;损坏则放弃修改、保留原文件;同时可备份到隔离目录。
防线2:运行时 ClassFileTransformer(动态拦截兜底)
就算静态清理漏网,内置 CrossLoaderBlockTransformer 字节码转换器: JVM加载类的时候实时拦截类字节:
- 如果检测到其他平台的Mixin类,直接返回空字节数组,阻止该类加载
- 日志输出 Blocked cross loader mixin
作用:双重保险,防止某些内嵌、嵌套jar内的跨平台Mixin逃过静态扫描。
四、可配置项( mixin_cleaner_config.properties )
从代码 loadConfig() 可见配置参数:
1. targetLoader :指定当前游戏加载器 FORGE/NEOFORGE/FABRIC (核心参数) 2. targetMcVersion :目标MC版本 3. strictMode :严格模式,非目标平台模组直接拦截 4. safeMode :安全模式,修改模组前自动备份 5. enableQuarantine :开启隔离(冲突mod移入隔离文件夹) 6. autoIsolate :自动隔离冲突mod 7. enableAuditLog :开启详细审计日志
五、目录结构(运行自动生成)
plaintext
mods/ ├─ disabled_by_agent/ # 被禁用的冲突mod ├─ quarantine/ # 隔离备份 mods/mixin_cleaner_logs/ ├─ recovery.csv # 修改记录,用于恢复mod └─ 运行日志 mixin_cleaner_config.properties # 配置文件
六、适用场景 & 局限
✅ 适用
- 整合包作者,大量双平台mod混装(尤其Forge ↔ NeoForge共存冲突)
- 整合包存在带两套Mixin的通用模组(Create、ExquisiteReceptacle这类跨平台mod)
- 持续遇到 Mixin apply failed 、 MixinExtras 跨平台冲突崩溃
❌ 不能解决
- 同平台多个模组之间Mixin目标冲突(两个mod同时修改同一个原版类,这个工具管不了)
- 不修复代码逻辑bug,只解决跨加载器多余Mixin污染
七、和同类工具区别
普通Mixin冲突修复工具大多只做运行时拦截; 这个程序特色: 静态Jar清理 + 运行时字节码拦截双层防护,不仅阻止加载,还能直接物理修改Jar剔除多余类,减少运行时开销;同时支持文件夹热监控,游戏运行期间新增mod也会自动处理。
八、简单总结一句话
MixinConflictCleaner 是一款JVM JavaAgent,专门针对MC双平台打包模组,剔除Jar内不属于当前游戏加载器的异种平台Mixin代码,解决Forge/NeoForge/Fabric跨平台Mixin共存引发的启动崩溃,采用「静态预处理Jar + 运行时动态拦截」双重方案。


