是什么 Minecraft 图解?名称解释

Minecraft 映射解析:MCP、Yarn 和 Mojmap 如何将混淆的类名转换为可读代码,以便模组和客户端可以钩接游戏.

Mappingsby trqUpdated June 4, 2026
Key takeaways
  • 映射是名称表,用于将 Minecraft 的混淆代码转换为可读的名称。
  • Mojang 会打乱类、字段和方法的名称,并且这些名称会随着每个版本的变化而改变。
  • 你将要了解的这三个是 MCP、Yarn 和 Mojang 映射(Mojmap)。
  • 映射在编译时应用,而不是在运行时应用,因此它不会发送给玩家.

Minecraft 的映射表是名称表,它们将游戏中的混淆代码转换为可读的名称。Mojang 发布的 Minecraft 包含打乱的类名和字段名,例如 a.a.a,因此模组和客户端开发者会应用一个映射集,如 MCP、Yarn 或 Mojang 映射,以获得他们可以实际读取和钩入的名称.

Opal 的适配方式

Opal 是一个 Fabric 模组,因此它在内部针对现代映射进行构建,并提供了一个简洁的 GraalVM JavaScript 脚本 API。 您可以使用可读的名称编写脚本,而无需自己接触映射。 请参阅 脚本编写指南

为什么存在映射

Mojang 在发布前会对 Minecraft 进行混淆处理。发布的 jar 文件会将类、方法和字段重命名为短小的、没有意义的字符串,以减小文件大小并使代码难以阅读。正是这种混淆导致了你无法直接打开游戏并开始编辑它。

映射就是用来逆转这种处理的字典。它将每个混淆名称与人类可读的名称配对,例如,一个名为 field_70181_x 的字段会变成 motionY。应用了映射后,开发者就能看到外观正常的代码库,并可以针对它编写模组。

这里有一个需要注意的例外。混淆名称会随着 Minecraft 的每个版本而变化,因此同一个字段在一个版本中可能是 a,在下一个版本中可能是 bk。映射吸收了这种变化,这就是它们是每个模组工具链的基石的原因。

你会听到的三个

MCP(Mod Coder Pack)是社区提供的映射,它使得在 1.14 之前的模组开发成为可能。它使用两层方案:Searge 项目生成了稳定但丑陋的中间名称,例如 field_70181_x,而 MCP 则用友好的名称(例如 motionY)将其包装起来。大多数较早的 1.8.9 独立客户端都针对 MCP 映射的源代码树进行编译,并使用 MCP 和 Searge 名称进行反射.

Yarn 是 FabricMC 为 Fabric 生态系统维护的开源映射。它由社区驱动,采用自由许可协议,并在每次发布新版 Minecraft 时迅速更新,这正是 Fabric 模组能够快速达到新版本的原因之一。

Mojang 映射,通常被称为 Mojmap,是 Mojang 官方发布的首次方映射,自 1.14.4 版本起,随每个官方版本一同发布。由于它们直接来自 Mojang,因此名称与开发者实际使用的名称完全一致。它们有效地取代了 MCP 和 Searge,成为针对 1.21 或更高版本的任何新客户端的默认选择。

它们之间的比较

MCPYarnMojang 映射
维护者社区 (Searge + MCP)FabricMCMojang
时代1.14 之前 (1.7-1.12)1.14+1.14.4+
来源社区衍生社区衍生官方
与其一起使用遗留客户端,旧的模组FabricFabric, Forge
状态被 Mojang 映射取代活跃活跃的默认选项

映射如何融入模组工具链

映射在编译时应用,而不是在运行时应用。构建工具获取被混淆的游戏,对其运行映射,然后将可读的版本交给你进行编码。然后,你的成品模组会被重新映射,以便与玩家游戏实际使用的被混淆名称对齐.

不同的加载器对此处理方式各不相同。 Fabric 会根据项目情况,基于 Yarn 或 Mojang 映射进行构建。 历史上,Forge 将这项工作一分为二,使用一种映射来读取源代码,另一种映射来运行程序。 Mojang 映射的许可足够宽松,可以在构建时使用,这也是现代工具链依赖它的原因。

常见问题