混淆映射表

来自Minecraft Wiki
跳转至: 导航搜索
Information icon.svg
此特性为Java版独有。

混淆映射表Proguard用来映射被混淆的类和类成员在混淆前和混淆后的名称的。[1]19w36a以来所有版本的client.json中都会导出混淆映射表。在19w36a发布一小段时间后,Java版1.14.4client.json也获得更新,导出了混淆映射表。[2]

用途[编辑 | 编辑源代码]

混淆映射表原意是用来反混淆被混淆后的堆栈记录的(例如崩溃报告中的堆栈记录)。[3]对应教程在此

DinnerboneAdrian Östergård表示混淆映射表会使编写mod更方便。[4][5]Searge表示混淆映射表可以替代一些辅助程序与编辑器,例如Mod Coder Pack。[6]

第三方用途[编辑 | 编辑源代码]

该段落的内容不受Mojang StudiosMinecraft WikiMinecraft论坛的官方支持

混淆映射表中包含的信息足以反混淆Minecraft使之反编译出容易理解的代码。可能有辅助程序与编辑器能够方便地反编译反混淆后的Minecraft。

根据许可证,这类反混淆反编译后的代码只能供开发使用。

许可证[编辑 | 编辑源代码]

每个混淆映射表开头都有一行字,表示这些映射表的许可证。

# (c) 2020 Microsoft Corporation. All rights reserved. These mappings are provided "as-is" and you bear the risk of using them. You may copy and use the mappings for development purposes, but you may not redistribute the mappings complete and unmodified. Microsoft makes no warranties, express or implied, with respect to the mappings provided here.  Use and modification of source code for Minecraft: Java Edition is governed by the Minecraft End User License Agreement available at https://account.mojang.com/documents/minecraft_eula.

以下是一份参考译文,不可作为原许可证的替代:

# (c) 2020 微软公司。保留所有权利。这些映射“按其现状”提供,且您使用它时需要自担风险。您可以以开发的目的复制、使用这些映射,但您不能完整无修改地再分发这些映射。对于此处提供的映射,微软不提供任何明示或暗示的担保。对Minecraft:Java版源代码的使用和修改受Minecraft最终用户许可协议管理,见https://account.mojang.com/documents/minecraft_eula。

历史[编辑 | 编辑源代码]

2019年9月3日Dinnerbone提到19w36a中会有一个“给mod制作者的小惊喜”。
Java版
1.1519w36a现在client.json中包含客户端和服务端的混淆映射表下载信息。
2019年9月4日Dinnerbone发布了Java版1.14.4的混淆映射表。
2020年8月12日Dinnerbone提到混淆映射表的许可证将会更新,以此鼓励Mod制作者使用Mojang的混淆映射表。他在另一条推文中说这将“有助于兼容性”。
Dinnerbone同时也发布了新许可证的预览

你知道吗[编辑 | 编辑源代码]

  • 19w36a(2019年9月4日)之后发布的所有Java版版本中,Combat Test 3是唯一一个没有混淆映射表的版本。
    • 不像先前的Combat Test,此版本基于的1.14.4已经发布了混淆映射表。
    • 之后的所有Combat Test都发布了混淆映射表,且基于已发布混淆映射表的版本。
  • 1.16为止,2020年发布的版本在其混淆映射表文件的许可证中仍然使用# (c) 2019 Microsoft Corporation.
  • 在客户端混淆映射表中, 第一个函数是youJustLostTheGame(), 这是致敬The Game的一个彩蛋。
    • 这个函数用于在按住调试按键Control + F3 + C十秒后触发Java崩溃。

参考[编辑 | 编辑源代码]