- 注册
- 2024年03月07日
- 帖子
- 6
- 金粒
- 金粒1886粒
- 钻石
- 钻石0颗
- 嗨币
- 嗨币0个
- 主题 作者
- #1
从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
- 内容版权许可
- CC BY-NC-SA 署名-非商业性使用-相同方式共享

