标签: Gradle

  • 使用Architectury Loom开发Minecraft 26.1的模组时得到Failed to find official mojang mappings for 26.1的错误

    简单来说

    Minecraft 26.1开始正式取消混淆,原来适用于有混淆的游戏版本的工具链需要更新。

    Architectury Loom需要把dev.architectury.loom换成dev.architectury.loom-no-remap插件,并修改版本号为1.14-SNAPSHOT,用来处理不带混淆的游戏版本。同时Architectury Plugin也需要升级到3.5-SNAPSHOT版本。这样就能正常处理不带混淆的游戏,但这一点不论是在Architectury的文档还是在arch loom GitHub页面的issues里都没有提到


    Minecraft不再混淆

    继19w36a发布官方的混淆映射表以后,Mojang在2025年10月29日宣布,从26.1-snapshot-1开始,Java版的源代码不再进行混淆,25w45a至1.21.11,Mojang同时发布已混淆和未混淆的文件,用来帮助社区进行过渡。

    Fabric Loom提供了一个net.fabricmc.fabric-loom-remap的插件变种,用来处理带混淆的游戏,旧的插件IDfabric-loom是它的别名;而net.fabricmc.fabric-loom则用于处理无混淆的版本。

    在移除混淆后,Loom的modImplementationmodRuntimeOnly等configuration已经不再需要,直接使用implementationruntimeOnly等就可以;remapJar的task也被删除,直接使用jar就可以;dependencies里也不再需要mappings的configuration了。

    Architectury Loom在一个月前开始合并Fabric Loom 1.14

    中国有句话叫“闷声大发财”。

    和Fabric Loom相似地,作为其Fork的Arch Loom也需要做出一些更改。或许是为了旧代码的兼容性,他们使用了dev.architectury.loom-no-remap这一插件ID用于不带混淆的游戏。可能是由于Arch Loom 1.14还没正式发布,loom-no-remap没有在任何相关文档中被提到,现在只有1.14-SNAPSHOT。但是Shedaniel在cloth-config的代码库里已经这样用了1,所以我觉得可以认为这一更改已经确定了,其他开发者可以如此进行迁移。

    Arch Loom的整体变更和Fabric Loom相似,按上面提到的修改就可以。

    除此之外还需要把architectury-plugin升级到3.5-SNAPSHOT版本,旧版本还尝试依赖remapJar的task,会导致运行时出错。同时,Arch Plugin还移除了namedElements,引用common项目的时候也不再需要指定configuration。


    qyl制作的基于Architectury Loom的多加载器模组项目模板已经更新,现在支持26.1,欢迎使用https://github.com/qyl27/architectury-loom-template

    1. https://github.com/shedaniel/cloth-config/commit/48614681f2b39740c1316247499c0cac2d92b524 ↩︎
  • Gradle多模块项目中,不同路径下的同名模块的依赖冲突造成循环依赖

    Gradle用group:name:version:classifier的格式作为依赖的唯一标记,不同路径下的同名模块,这四项都相同,因此在依赖解析的时候出现冲突(经常表现为循环依赖)。这被认为是个Bug,但已经存在了九年多(https://github.com/gradle/gradle/issues/847)。

    三个解决方案:
    1、让同名的模块在不同的group里;
    2、给模块改成不同的名称(在settings.gradle里改,或者直接重命名模块的文件夹);
    3、使用Gradle插件:https://github.com/SgtSilvio/gradle-structure(是一个临时的解决方案,实际上就相当于自动在settings.gradle里改模块名)。