帖子

Memorial Edition

查看: 42|回复: 0

[模组开发讨论] 【MJSB】Mojang仅凭一个改名得罪了所有Modloader(bushi

[复制链接]

Lv.9 牧场主

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

Java正版勋章Windows 10正版勋章

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

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

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

x
本帖最后由 teddyxlandlee 于 2025-11-5 18:24 编辑

最新快照25w45a同步发布了未混淆的版本25w45a_unobfuscated,该版本没有进入Version Manifest。

与此同时,Mojang把net.minecraft.resources.ResourceLocation(Fabric Yarn:net.minecraft.util.Identifier;Intermediary:net.minecraft.class_2960)改名为net.minecraft.resources.Identifier。不知是对CC0之神Yarn的致敬,还是如Wiki群友说的“与基岩版术语同步”。

Fabric由于使用Intermediary这一稳定中间名,不会受到影响。但从1.21.12起,Intermediary就要随着去除混淆适应期的结束而终止存在,Fabric平台的兼容断层本就是1.21.12

Forge和NeoForge分别从1.20.6和1.20.2就开始用官方映射表,所以他们不得不接受Mojang对代码进行更名导致的兼容性问题。因此,1.21.11是Forge系的兼容断层

因此,通过Unobfuscation和Identifier renaming,Mojang把所有modloader得罪了个遍(大雾

(以上涉及的版本号都假设Mojang暂时不跳大版本号)


这两件事情都很令人意外,但当它们发生在同一个版本,这个有意思的巧合就可以加以利用。

简单来说,无论是哪个平台,在运行环境中都可以通过判断net.minecraft.resources.Identifier类是否存在,来判定是否是Mojang官方的未混淆版本。通常来说,在代码中使用`Class.forName("net.minecraft.resources.Identifier")并检测是否抛出ClassNotFoundException异常,这就足够了。——Fabric在[25w45a, 1.21.11]区间内的混淆版本仍会使用intermediary,不会被这个规则误判。

但在Mixin Config Plugin或Coremod等不适合加载原版类的情况下,如果不能扫classpath的话,这个办法可能并不适用。

如果在Forge系环境下,可以直接比较MC版本是否高于1.21.10,这就足够了,毕竟他们不支持快照。

Fabric的话情况会稍微复杂一些。由于我们目前并不知道Fabric会如何将_unobfuscated的版本翻译称SemVer(语义版本号),我们只能在原始版本号上作文章。但在假定Mojang不跳大版本号的条件下,从1.21.12的第一个快照起将不再包含混淆。因此可以作这么一个判定:

isMojMapped(): !(<=1.21.11-alpha.25.44.a) && (>=1.21.12- || FabricLoader.getInstance().getRawGameVersion().endsWith("_unobfuscated"))

其中1.21.12-在Fabric的SemanticVersion中代表“主版本号为1.21.12的某个虚拟版本,该版本不晚于一切主版本号为1.21.12的版本”。也就是说,>=1.21.12-匹配1.21.12的所有快照、预发布版、发布候选、正式版等,以及比1.21.12更晚的版本。

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

本版积分规则

树是生活,埋的是我,看花就好,别看我落魄。

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

GMT+8, 2025-11-6 06:28 , Processed in 0.238711 second(s), 18 queries , Redis On.

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

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

返回顶部