跳到正文

UniMixins

一款旨在实现最大兼容性的 Mixin 加载器。

收藏

介绍

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

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 加载器?你没看过那篇 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 的其他作品

查看全部 →