Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
Advertisement
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。

根据许可证,这类反混淆反编译后的代码只能以修改后的版本发布,或作为更大的项目的一部分。

许可证[]

每个混淆映射表开头都有一行字,表示这些映射表的许可证。目前的许可证自21w03a起使用。请注意参考译文不可作为原文本的替代

# (c) 2020 Microsoft Corporation. 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 this document or the source code (in any form) of 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。

根据Dinnerbone所言,在2020年8月14日更新许可证前发布的混淆映射表除了仍然按照旧许可证授权外,也会以新的许可证授权。[7]

历史[]

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同时也发布了新许可证的预览
2020年8月14日更新了混淆映射表的许可证。
更新了version_manifest.json,现在1.14.4版本的client.json有了映射表,自19w36a起的版本现在使用更新许可证后的映射表。
1.1721w03a更改了许可证的部分用词。

你知道吗[]

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

参考[]

Advertisement