Learn · mappings
是什么 Minecraft 映射?详解
Minecraft 的映射是名称表,它们将混淆的代码,例如 a.b.c,转换为可读的名称,以便模组和客户端可以读取和钩住游戏.
什么是 Minecraft 映射?
Minecraft 映射是翻译表,它将游戏中的混淆符号与人类可读的名称配对。零售版中,类、方法和字段都被重命名为微小的无意义字符串,例如 a、bk 或 c.d.e。像 MCP、Yarn 或 Mojang 映射这样的映射集会在这些混乱之上覆盖真实名称,以便开发人员可以阅读代码并与之挂钩。
如果没有映射,游戏在技术上是开放的,但在实践中却难以阅读。应用一个映射后,标记为 field_71090_bL 的字段会显示为类似 experienceLevel 的名称,整个代码库突然看起来像正常的软件。
为什么 Minecraft 需要映射?
映射存在是因为 Mojang 在每次发布前都会混淆 Minecraft。构建步骤会将每个类和成员重写为短令牌。这可以稍微减小 jar 文件的大小,但主要目的是使代码难以理解。这是每个模组和客户端必须克服的障碍。
映射是通往这个障碍的关键。它是一个一对一的列表:左边是混淆名称,右边是可读名称。将其应用于整个游戏,打乱的 jar 文件就会变成可用的源代码树.
你将要听到的三个映射集
有很多映射项目,但其中三个占据了对话的主导地位。它们各自属于不同的时代和不同的拥有者。
MCP (Mod Coder Pack)
MCP 是社区映射,在 1.14 之前为模组制作提供了动力。它运行在两层之上。Searge 项目生成了稳定但不美观的中间名称,例如 func_70071_h_,而 MCP 则为这些名称赋予了友好的名称,例如 onUpdate。大多数较旧的 1.8.9 独立客户端仍然针对 MCP 映射的树进行编译,并将它们的反射指向 MCP 或 Searge 名称。
Yarn
Yarn 是 FabricMC 为 Fabric 生态系统维护的开源映射。它是社区编写的,采用自由许可协议,并且在发布新的 Minecraft 版本时通常会快速更新。这种快速周转是 Fabric 模组能够尽早达到新版本的一个重要原因。
Mojang 映射
Mojang 映射,通常缩写为 Mojmap,是 Mojang 自 1.14.4 起在每个版本发布时发布的官方名称。由于它们直接来自源代码,因此名称与 Mojang 开发者实际使用的名称一致。它们有效地取代了 MCP 和 Searge,成为任何现代客户端的默认起点。
MCP 与 Yarn 与 Mojang 映射
简而言之:MCP 是旧的工具链,Mojang 映射是官方的替代品,而 Yarn 介于两者之间,是大多数 Fabric 项目使用的开放社区版本。以下是它们在重要方面的一些比较。
| MCP | Yarn | Mojang 映射 | |
|---|---|---|---|
| 维护者 | 社区(Searge + MCP) | FabricMC | Mojang |
| 时代 | 1.14 之前(1.7 到 1.12) | 1.14 及更高版本 | 1.14.4 及更高版本 |
| 起源 | 社区衍生 | 社区衍生 | 第一方官方 |
| 典型用途 | 遗留客户端,旧的模组 | Fabric | Fabric, Forge, NeoForge |
| 状态 | 为 Mojmap 所取代,已退役 | 活跃 | 活跃的默认选项 |
映射在模组工具链中的作用
映射在编译时完成其工作,而不是在运行时。构建工具获取被混淆的游戏,运行映射,然后将可读的副本交给开发者编写。当模组完成后,工具链将其重新映射,使其引用与玩家实际 jar 中的混淆名称对齐。
加载器对此采取不同的方法。Fabric 基于 Yarn 或 Mojang 映射进行构建,具体取决于项目。Forge 历史上将工作拆分,通过一个映射读取代码,同时针对另一个映射运行。Mojang 映射的许可足够宽松,可以在构建时使用,这就是为什么大多数当前的工具链依赖于它的原因.
中介:稳定模组的层级
还有一个值得了解的名字。中介是 Fabric 使用的一个稳定的中间层,即使可读的映射发生变化,编译后的模组也能继续工作。可读名称(Yarn 或 Mojmap)位于顶层,方便人类使用,而中介则在底层保持不变,为运行的游戏提供支持。在 MCP 世界中,Searge 扮演了类似的角色。这个想法很简单:为二进制文件提供一个固定的层级,为开发者提供一个友好的层级。
常见问题
编号:映射仅仅是为编写代码的人重命名事物。最终的模组会被重新映射回混淆后的名称,因此您所使用的可读名称永远不会到达玩家的游戏中.
历史与所有权。MCP 最早出现,并在 1.14 之前的时代推动了模组化。Yarn 与 Fabric 共同成长,作为一个开放的社区,而 Mojang 的映射在 Mojang 开始在 1.14.4 版本中发布官方名称时出现.
对于当前的 Minecraft,Mojang 映射或 Yarn 是标准选择。MCP 主要与旧版 1.8.9 时期的工作相关,那时仍然在使用旧的工具链.
编号:映射是一个名称表。像Fabric这样的模组加载器是运行时,它将模组注入到游戏中。它们协同工作,但解决着完全不同的问题.
获取Terminus
Built to track Minecraft's mappings so its modules keep working across versions.