此特性为Java版独有。
混淆映射表是Proguard用来映射被混淆的类和类成员在混淆前和混淆后的名称的。[1]自19w36a以来所有版本的client.json中都会导出混淆映射表。在19w36a发布一小段时间后,Java版1.14.4的client.json也获得更新,导出了混淆映射表。[2]
用途[]
混淆映射表原意是用来反混淆被混淆后的堆栈记录的(例如崩溃报告中的堆栈记录)。[3]对应教程在此。
Dinnerbone和Adrian Östergård表示混淆映射表会使编写mod更方便。[4][5]Searge表示混淆映射表可以替代一些辅助程序与编辑器,例如Mod Coder Pack。[6]
第三方用途[]
该段落的内容不代表Mojang Studios或Minecraft Wiki的官方意见。
混淆映射表中包含的信息足以反混淆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。
21w03a以前的许可证内容稍有不同。
# (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。
2020年8月14日以前发布的版本(如Java版Combat Test)以更旧的许可证授权。
# (c) 2019 Microsoft Corporation. All rights reserved. This information is provided "as-is" and you bear the risk of using it. This information does not provide you with any legal rights to any intellectual property in any Microsoft product. You may copy and use this information for your internal, reference purposes. Microsoft makes no warranties, express or implied, with respect to the information provided here.
参考译文:
# (c) 2019 微软公司。保留所有权利。这些信息“按其现状”提供,且您使用它时需要自担风险。这些信息不为您提供任何微软产品中含有的任何知识产权的任何法律权利。您可以在您内部、以参考为目的复制、使用这些信息。对于此处提供的信息,微软不提供任何明示或暗示的担保。
根据Dinnerbone所言,在2020年8月14日更新许可证前发布的混淆映射表除了仍然按照旧许可证授权外,也会以新的许可证授权。[7]
历史[]
2019年9月3日 | Dinnerbone提到19w36a中会有一个“给mod制作者的小惊喜”。 | ||||
---|---|---|---|---|---|
Java版 | |||||
1.15 | 19w36a | 现在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.17 | 21w03a | 更改了许可证的部分用词。 |
你知道吗[]
- 在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的一个彩蛋。- 这个函数用于在按住调试按键Ctrl + F3 + C十秒后触发游戏崩溃。
参考[]
- ↑ ProGuard manual | Usage — Guardsquare。
- ↑ “I've been pushing for this for a while, so I'm really happy that we were finally able to release the obfuscation mappings public. @SeargeDP had a great idea to release the 1.14.4 mappings as comparison, so those are going out right now.” – @Dinnerbone,2019年9月4日
- ↑ ProGuard manual | Retrace — Guardsquare。
- ↑ “Tomorrow's snapshot has a small surprise for modders! Should make one or two people happy :)” – @Dinnerbone,2019年9月3日
- ↑ “Happy modding!” – @adrian_ivl,2019年9月4日
- ↑ “This should answer the questions of everyone who kept asking about MCP updates for newer versions of Minecraft. Spoiler: there won't be any, they are finally not necessary anymore.” – @SeargeDP,2019年9月4日
- ↑ “Existing mappings will still be available under the old terms, but we will also republish them with the new terms on Friday. All new mappings provided in the future will be under the new terms.” – @Dinnerbone,2020年8月12日
版本 | |||||||
---|---|---|---|---|---|---|---|
开发周期 |
| ||||||
技术 |
| ||||||
多人游戏 | |||||||
游戏订制 |
语言