
UniMixins
为最大兼容性而设计的Mixin加载器。
UniMixins
UniMixins 是一个用于 Minecraft 1.7.10(部分支持 1.8.9~1.12.2)的 Mixin 加载器,旨在实现最大兼容性。它力求尽可能多地整合各种 Mixin 加载器的功能,其模块化设计使其能够在需要时与其他加载器一同使用。
背景
1.7.10 存在众多 Mixin 加载器,每个都提供了一组不同的附加功能,我们称之为*“扩展功能”*,这些功能在提供 Mixin 的基础上额外提供。
由于每个加载器都是单体式的,不同的加载器之间因不可避免的功能重叠而无法同时使用。为解决这一问题,UniMixins 将每项功能作为独立模块提供(但为方便起见,仍提供了整合的 jar 包)。
对比表
下表对比了已知 Mixin 加载器的功能集。
注意:该表的详细版本可在此处查看。

- [NOP]: 不执行任何操作。(issue)
- [SEP]: 可作为独立模组使用。
使用方法
下载 -all jar 包,并将其放入你的 mods 目录。移除任何其他冲突的 Mixin 加载器(参考上表)。
注意: jar 包的命名需确保按字母顺序排在首位,以避免与内嵌 Mixin 的模组产生排序问题。这就是 jar 包名称以
+字符开头的原因。如果遇到重命名 jar 包的问题,你可能需要将其改为!字符。供参考,以下是一些重要字符的排序顺序:
!<+<0<[<_<a
高级用法
你也可以使用各模块的 jar 包自行组合模块。某些模块依赖其他模块,详见 模块列表 部分。
假设不存在其他 Mixin 加载器,你通常需要以下模块:
- Mixin(任意一个分支)
- Compat 和 Mixingasm(可选但强烈推荐)
- 提供你所需扩展功能的模块
如果模块缺少依赖,游戏将崩溃。这可以在配置中禁用。
模块列表
所有模块都依赖 Mixin 模块。注意,依赖项不一定必须来自 UniMixins 模块,其他模组也可以提供。
包含在 all jar 中
- Mixin (UniMix):提供由 UniMixins 开发者维护的 Mixin 分支,基于 Fabric 分支。
- SpongeMixins [仅 1.7.10]:提供对 SpongeMixins 扩展功能的模拟。
- MixinBooterLegacy [仅 1.7.10]:提供对 MixinBooterLegacy 扩展功能的模拟,以及一个重定位的 MixinExtras。
- MixinExtras:提供 MixinExtras。
- GasStation [仅 1.7.10]:提供对 GasStation 扩展功能的模拟。
- 依赖 SpongeMixins。
- 依赖 MixinBooterLegacy。
- 依赖 MixinExtras
- GTNHMixins [仅 1.7.10]:提供对 GTNHMixins 扩展功能的模拟,以及一个重定位的 MixinExtras。
- 依赖 SpongeMixins。
- Compat:各种兼容性调整:
- 重映射模组中对 Mixin 类(特别是被遮蔽的 ASM)的无效引用。
- 在崩溃报告中添加关于 mixin 的信息。[仅 1.7.10]
- Mixingasm:改善 Mixin 与 ASM 转换器的兼容性。
可选
- Future Compat [仅 1.8.9+]:使许多模块可在 1.8.9+ 上使用。在 1.8+ 上运行模组所需。(Mixingasm 不需要。)
非常可选
这些不包含在发布版本中,主要用于测试目的。(注意:同一时间只能使用一个 Mixin 模块。)
- Mixin (SpongePowered):提供 Mixin 上游分支。
- Mixin (Fabric):提供 Fabric 分支。
- Mixin (GasMix):提供 GasStation 分支。
- Mixin (GTNH):提供 GTNH 分支。
常见问题
为什么又搞一个 mixin 加载器?你没看过那张 xkcd 漫画吗?
在 UniMixins 创建之前,1.7.10 上的 Mixin 加载器碎片化过于严重,不同模组需要不同的不兼容加载器。这既有开发者之间冲突的原因,也有技术上的原因(加载器被设计为单体式,容易导致不兼容)。本项目不存在上述两个问题。

你们为什么要用 Fabric 分支的 Mixin?这不是个 Forge 模组吗?
Fabric 分支的 Mixin 比上游分支维护得更积极,并且有一些额外的修复。Fabric 分支的大多数改动并非 Fabric 专属。
“扩展功能”到底有什么用?
- SpongeMixins、Grimoire、MixinBooterLegacy、GasStation 和 GTNHMixins 提供了各种让你将 mixin 注入非核心模组类的方法。(这是 Mixin 本身不支持的功能,因为其所有阶段都发生在 Forge 发现非核心模组并将其加入类路径之前。)
- MixinBooterLegacy、GasStation 和 GTNHMixins 添加了一个“后期”mixin 阶段,该阶段在第一个模组构建事件派发之前触发。此时所有模组都已被发现。
- SpongeMixins 允许你通过文件名在早期手动将模组添加到类路径。这是一个古老而笨拙的解决方案。
- 我们推荐新模组使用 GTNHMixins,因为它是最活跃使用和维护的选项。
- Mixingasm 修复了 一个 Mixin 问题,该问题因 Mixin 改变了调用方式而导致某些 ASM 转换器失效。
- MixinExtras 添加了新的 Mixin 功能,使模组可以编写侵入性更小的 mixin。
Mixin?mixin?SpongeMixins?SpongePowered?有什么区别?
- Mixin:一个 Java 库,允许你以流畅的方式转换 Java 类。
- SpongePowered:创建 Mixin 的组织(他们还开发了一个名为 Sponge 的模组 API)。
- mixin:一种特殊的 Java 类,定义了应应用于某个类的“更改”。这些更改由 Mixin 应用。
- SpongeMixins:由 TimeConqueror 创建的 Mixin 加载器,其名称非常泛化。
许可证
UniMixins 采用 Unlicense 许可证,但部分模块除外。完整详情请参阅 LICENSE。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。