removing-obfuscation-in-java-edition
Vanilla-generic_1170x500%20(1).jpg

移除Java版中的混淆处理
新闻这对我们的模组制作社区意味着什么

你喜欢为Java版制作模组、捣鼓构建,或是深入研究Minecraft的代码吗?那这篇文章就是为你准备的!

长期以来,Java版一直采用代码混淆(隐藏部分代码)——这在游戏行业是一种常见做法。现在,我们将改变Minecraft:Java版的发布方式,彻底移除代码混淆。我们希望通过这一改变,为Minecraft:Java版开创一个更易于创建、更新和调试模组的未来。

一段混淆的历史

Minecraft:Java版自发布以来一直存在代码混淆。这种混淆意味着人们无法查看源代码,所有内容都经过加密处理——而那些想要为Java版制作模组的人,不得不努力拼凑出代码中每个类和函数的作用。

但我们鼓励大家在Minecraft中以及借助Minecraft发挥创造力——因此在2019年,我们尝试通过发布「混淆映射表」来让这一繁琐过程变得轻松一些。这些映射表本质上是一长串对照表,能让人们将混淆后的术语与未混淆的术语对应起来。这在一定程度上缓解了问题,因为模组制作者不再需要费力琢磨各个部分的作用或应有名称。但为何要止步于此呢?

移除Java版中的代码混淆

为了让一切变得更简单——并省去这些中间步骤,我们将彻底移除代码混淆!从群骑纷争完整上线后的首个快照开始,Minecraft:Java版将不再进行代码混淆处理。这意味着该版本(及所有后续版本)将默认包含我们所有的原始名称*——如今变量名和其他名称都将保留,旨在让模组制作变得更加轻松。


*此处的「名称」指代码元素的技术名称,包括变量、字段、方法、类等。

——实用指南

这对模组制作者意味着什么

我们知道,这一变化可能会给现有的模组制作工具带来挑战,因为这些工具通常是为处理混淆代码而设计的,不过我们会帮助模组制作者为这一变化做好准备。从下一个快照开始,我们将在提供混淆版本的同时,提供未混淆的「实验性发布」版本。在我们全面过渡到非混淆版本之前,模组制作者将能够使用这些版本来测试他们的工具和工作流程。

群骑纷争完整上线后的首个快照将是首个不含代码混淆的版本。

我们为什么要这样做?

模组制作是Java版的核心所在——而代码混淆让模组制作变得更加困难。我们对取消代码混淆这一变革感到十分兴奋,因为这将使模组制作者能更快速、更轻松地创建和改进模组。现在,大家无需再去梳理复杂的代码,也不用处理含义不明的名称。此外,调试工作将变得更加简单明了,崩溃日志也将真正具有可读性!

最终用户许可协议不变

特此提醒:这些变更不会影响我们的《Minecraft 最终用户许可协议https://www.minecraft.net/zh-hans/eula)》以及《Minecraft 使用准则https://www.minecraft.net/zh-hans/usage-guidelines)》。两者仍然适用于Minecraft:Java版及所有模组,因此请务必留意。为了更加透明,你现在可以在jar文件中找到一个LICENSE文件,该文件直接链接至最终用户许可协议。

模组开发者在即将发布的正式版和快照中可期待以下内容:

  • 版本.json文件中将不再包含混淆映射表——因为其已无存在必要。
  • 客户端与服务器的.jar文件将不再经过混淆处理。
  • 每个.jar文件现在会包含一个新的LICENSE文件。

与我们的所有版本一样,我们希望收到大家对这一变更的反馈——尤其是在我们从混淆的过去向更透明的未来过渡的过程中!

原文名称:Removing obfuscation in Java Edition
原文作者:Staff
原文链接:https://www.minecraft.net/zh-hans/article/removing-obfuscation-in-java-edition

免责声明:本页面为Minecraft.net官方文章的简体中文翻译作品,原文及除特别说明外的图片版权归Mojang Studios所有,采用CC BY-NC-SA 4.0授权;翻译作品解释权归Afulai2333所有,页面内容严格遵循《Minecraft使用准则》《Minecraft最终用户许可协议》及相关授权条款。完整版权说明详见通用版权声明:https://afulai2333.wikidot.com/mcarticle-general-copyright-notice

除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License