介绍
UniMixins
UniMixins 是一款适用于 Minecraft 1.7.10(部分支持 1.8.9~1.12.2)的 Mixin 加载器,旨在实现最大程度的兼容性。它致力于整合尽可能多种 Mixin 加载器的功能,并且采用模块化设计,因此也可以按需与其他加载器一起使用。
背景
适用于 1.7.10 的 Mixin 加载器有很多种,每种加载器在提供 Mixin 的基础上,还会提供一组不同的额外功能,我们称之为“附加功能”。
由于这些加载器都是单体式的,彼此之间不可避免地存在功能重叠,因此无法同时使用。为了解决这个问题,UniMixins 将每项功能分别做成独立模块(不过,为了方便起见,也提供了合并后的 jar 文件)。
对比表
下表比较了已知 Mixin 加载器的功能。
注意:此处提供了这张表格的详细版本。

- [NOP]:不起任何作用。(问题)
- [SEP]:可作为独立模组使用。
使用方法
下载 -all jar 文件,并将其放入模组目录。移除所有存在冲突的其他 Mixin 加载器(请参考上方的表格)。
注意:为了避免与内置 Mixin 的模组发生排序问题,务必将该 jar 文件命名为按字母顺序排在最前面的名称。这就是为什么该 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。
- 兼容性:各种兼容性调整:
- 修正模组中对无效 Mixin 类(特别是被着色的 ASM)的引用。
- 在崩溃报告中添加有关 mixin 的信息。[仅限 1.7.10]
- Mixingasm:提升 Mixin 与 ASM 转换器的兼容性。
可选
- 未来兼容性 [仅限 1.8.9 及以上版本]:让许多模块能够在 1.8.9 及以上版本中使用。在 1.8 及以上版本运行该模组时必需。(Mixingasm 无需此项。)
非常可选
这些内容不会包含在正式发布版本中,主要用于测试。(注意:同一时间只能使用一个 Mixin 模块。)
- Mixin (SpongePowered):提供 Mixin 的上游分支。
- Mixin (Fabric):提供 Mixin 的Fabric 分支。
- Mixin (GasMix):提供 Mixin 的GasStation 分支。
- Mixin (GTNH):提供 Mixin 的GTNH 分支。
常见问题
为什么还要做一个 Mixin 加载器?你没看过那篇 xkcd 漫画吗?
在 UniMixins 创建之前,1.7.10 上的 Mixin 加载器过于分散,不同模组需要不同且彼此不兼容的加载器。这部分是因为开发者之间存在冲突,另一部分则是技术原因(加载器采用单体式设计,容易导致不兼容)。这个项目没有这两类问题。

为什么使用 Mixin 的 Fabric 分支?这不是 Forge 模组吗?
Mixin 的 Fabric 分支比上游分支维护得更积极,也包含一些额外修复。Fabric 分支的大多数改动并非专为 Fabric 设计。
这些“扩展功能”到底有什么用?
- SpongeMixins、Grimoire、MixinBooterLegacy、GasStation 和 GTNHMixins 提供了多种方式,让你可以 mixin 到非 coremod 的类中。(这是 Mixin 原生不支持的功能,因为它的所有阶段都发生在 Forge 发现非 coremod 并将它们放入类路径之前。)
- MixinBooterLegacy、GasStation 和 GTNHMixins 添加了一个“延迟”mixin 阶段,该阶段会在第一个模组构造事件被分发之前触发。此时所有模组都已被发现。
- SpongeMixins 允许你使用文件名提前手动将模组添加到类路径中。这是一个古老且取巧的解决方案。
- 我们建议新模组使用 GTNHMixins,因为它是使用最活跃、维护最积极的选项。
- Mixingasm 修复了一个 Mixin 问题,该问题会破坏某些 ASM 转换器,因为 Mixin 改变了它们的调用方式。
- MixinExtras 添加了新的 Mixin 功能,允许模组编写侵入性更低的 mixin。
Mixin?mixin?SpongeMixins?SpongePowered?有什么区别?
- Mixin:一个 Java 库,让你以流畅的方式转换 Java 类。
- SpongePowered:创建 Mixin 的组织(他们还开发了一个名为 Sponge 的模组 API)。
- mixin:一个特殊的 Java 类,定义了一个应应用于某个类的“更改”。这些更改由 Mixin 应用。
- SpongeMixins:由 TimeConqueror 创建的 Mixin 加载器,名字非常通用。
许可证
UniMixins 采用 Unlicense 许可,部分模块除外。完整详情请参阅 LICENSE。
常见问题
UniMixins 支持哪些 Minecraft 版本?
UniMixins 支持 Minecraft Java 版 1.7.10,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。
UniMixins 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端 / 服务端。
mitchej123 的其他作品
查看全部 →Thaumic Horizons
这个模组已由 GregTech New Horizons 团队重新维护,并获得了 TheKentington 的官方认可。
NotEnoughItems Unofficial 1.7.10
由 Gregtech: New Horizons 整合包开发者制作的 NotEnoughItems 1.7.10 续作,部分功能借鉴自 JustEnoughItems,部分则是从中回移植而来。
CodeChickenCore Unofficial 1.7.10
包含所有 Chicken-Bones(非官方)模组共用的代码。
GTNH Lib
GTNH前置库
评论
登录后评论和评分