帖子

Memorial Edition

查看: 54|回复: 0

[周边] 针对Mojang去除混淆,Fabric官方作出以下指示

[复制链接]

Lv.9 牧场主

人气
983 点
金粒
1494 粒
宝石
2 颗
爱心
46 颗
钻石
1560 颗
贡献
8 点

Java正版勋章Windows 10正版勋章

发表于 昨天 10:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 teddyxlandlee 于 2025-11-4 10:35 编辑

从Fabric移除混淆

原帖发布时间:2025-10-31

译者:teddyxlandlee | 原文及译文均以 CC BY-NC-SA 4.0 协议发布

原标题:Removing Obfuscation from Fabric


Mojang最新发了个帖子,宣布今年从《群骑纷争》正式版的下一个快照起,Java版将移除混淆。从11月5日的快照起,会同步发布附加的“实验性”版本,这给了我们准备和迁移的时间。

模组圈将迎来大变。本帖将尝试给出一个纲要,指导Fabric工具链的变化,以及其对Fabric模组开发者的影响。

啥是混淆?

即游戏代码中原本的类名、方法名、字段名等被隐藏,并用无意义的字母序列替代,这些字母序列通常在版本之间会变化。举个例子,用于苦力怕的类可能从Creeper变成了像brc这样的东西。

自从Minecraft正式版依赖,Mojang就是这么干的。这意味着一直以来,人们如果想修改游戏,就需要弄明白每段代码是干什么的,并使用工具把代码翻译成人类可读的名字。

之前我们是怎么应对混淆的?

Fabric有两个项目:Intermediary和Yarn。Intermediary从混淆的名称出发,给它们分配在版本之间稳定不变的编号——所以brc可能对应class_1548。Yarn就把这些编号翻译成人类可读的名字——所以class_1548可能被翻译成CreeperEntity。Yarn中的名字由Fabric社区贡献者通过分析代码创建并确定。(如果你发现代码中还有Intermediary编号,那么它们还没翻译!)

从2019年起,尽管游戏本身还是混淆的,Mojang同步发布了他们自己的官方映射表,人称“Mojmap”,其中的符号名就是他们开发Minecraft时使用的名字。这些符号名和Yarn中的不同,有些Mod开发者开始使用Mojmap,有些仍偏好使用Yarn。Fabric的工具链同时支持两种映射。

移除混淆意味着什么?

现在,原版代码中的名字将与Mojang自2019年以来发布的映射名相一致。此外,Mod开发者将可以知道Mojang开发者使用的方法参数名和局部变量名,这些在Mojmap里是没有的。

然而,Fabric工具链本为名称映射而设计,当映射不复存在,我们需要花大力气作出改变。

Fabric要怎么变?

我们计划更新我们的工具链,但工作量很大,需要花些工夫。

Fabric API的未来

Fabric API不会因此迎来破坏性大改,你喜欢的API亦将如常。但API的名字及其涉及的方法名、javadoc会更改,以准确反映Mojang官方使用的名称(Mojname)。

第一阶段(译注:1.21.11——如果Mojang不把版本号跳到1.22的话),我们将在不破坏API的前提下,把Fabric API迁移到Mojname。这会很快搞定,毕竟这对Mod开发者和玩家不会有影响。

当第一个完全不混淆的版本(译注:1.21.11之后的快照)发布,我们将把API中使用的名称改成Mojname下对应的名字。

Loom

新版本的Loom已开始开发。初始的目标,是让Mod开发者能够用新的实验性版本进行测试,这会在Loom 1.13完成。

长期来看,我们准备开发一个全新的、更模块化的Loom。Loom 2.0将提供一个最小化版本,该版本将不支持映射表。这会花些时间,我们刚新建完文件夹,还在设计中,请少安毋躁。

新版本Loom对Minecraft旧版本模组开发的支持绝不会移除,毕竟我们自始至终都是兼容Minecraft旧版本的,我们也希望继续这么做下去。我们也理解,不是所有人都想用新的Mojname,我们将给这些想用自己的符号名的用户提供一个重映射(remapping)方案。

Yarn的未来

省流:没有未来(悲)

我们Fabric社区衷心感谢261位Yarn贡献者维护了9年2个月零17天的的Identifier之荣耀。你们的贡献一直、永远被铭记。

坏消息是,在当前的情况下,我们没有理由继续在新版本更新Yarn了。

Minecraft旧版本的Yarn将继续欢迎贡献。

如果你是个用Yarn映射表的Mod开发者,你很有可能需要迁移到Mojname。详见下文的“对于Mod开发者”部分。

我要做些什么?

对于玩家

你不需要做什么!这主要影响的是Mod开发者。我们将尽可能保持和所有已知启动器的兼容性。

好消息是,这也意味着当一切尘埃落定,Fabric API之类的东西将会更新得更快,崩溃日志也会更容易看懂了。好耶!

我们一如既往地希望玩家们保持耐心,给Mod开发者一点时间去更新。我们衷心希望大家不要去轰炸他们。我们也建议所有玩家在更新世界前进行备份。

对于Mod开发者

这将是次大改,特别对于使用Yarn映射的开发者。现在还没法立刻更新你的Mod,但你可能希望做好准备。在《群骑纷争》(1.21.11)正式版及以前不会有什么变化。

我们建议新开发的Mod都使用官方映射表,这样在未来升级会更容易。

如果你的Mod还在用Yarn,不用担心!Loom有自动化的工具,能帮你重映射你的代码。我们正在积极寻找办法来改进这个工具,并在未来提供一些资源来帮助你。

升级后,你将受益于更简单、更快速的工具链,更易懂的日志、崩溃报告,以及新的调试方案。

省流:有啥影响

玩家

  • 耐心等待Mod更新
  • 崩溃报告更易懂

Modders

  • 别担心!甭着急
  • Yarn用户基本上都要迁移到Mojname
  • 你的构建脚本可能要改改
  • 生产环境的崩溃日志将更容易调试
  • 再见Intermediary!游戏运行时将使用Mojname

评分

参与人数 1人气 +2 金粒 +33 收起 理由
MRTangwin8 + 2 + 33 MCBBS有你更精彩~

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

最折磨人的或许不是一场惨烈战争,而是烦琐的日常生活。

Archiver|小黑屋| MCBBS纪念版 ( 新ICP备2024014954号|兵公网安备66010002000149号 )|隐私政策| 手机版

GMT+8, 2025-11-5 01:49 , Processed in 1.336877 second(s), 21 queries , Redis On.

"Minecraft"以及"我的世界"为美国微软公司的商标 本站与微软公司没有从属关系

© 2010-2025 MCBBS纪念版 版权所有 本站内原创内容版权属于其原创作者,除作者或版规特别声明外未经许可不得转载

返回顶部