User Tools

Site Tools


zh_cn:tutorial:migratemappings

更新 Java 代码库中的 Yarn 映射

Loom 能够半自动地升级 Java 代码库中使用的映射。因为 Yarn 经常改动,所以这个工具对于令代码库与最新的改动同步更新来讲非常有用。

注意:Mixin 和反射目前不能自动处理 ,需要手动更新。

Loom 0.2.6 及更高版本

假如你想要从 1.14.4 迁移到 19w46b。

  1. 这里,选择你想要迁移到的版本,然后复制 yarn_mappings 的值,比如 19w46b+build.1。先千万不要更改 gradle.properties 和 build.gradle。
  2. 在你 gradle 项目的根目录下,运行 gradlew migrateMappings --mappings "19w46b+build.1"
  3. 迁移之后的源代码会出现在 remappedSrc,检验一下迁移生成的代码是否有效。
  4. remappedSrc 中的源代码复制到原本的文件夹。记得先备份原本的源代码,以防万一。
  5. 根据这个网站的说明更新 gradle.properties 文件。
  6. 在 IDE 里重新加载 gradle 工程。
  7. 检查并且更新那些可能已经失效的 Mixin 目标。

可选的自定义参数

  • --input path/to/source 指定从哪里获取 Java 源文件,默认是 src/main/java
  • --output path/to/output 指定重新映射的源代码输出到哪,默认是 remappedSrc
  • --mappings some_group:some_artifact:some_version:some_qualifier 自定义获取映射的位置,默认是 net.fabricmc:yarn:<version-you-inputted>:v2。使用 net.minecraft:mappings:<minecraft-version> 来迁移到 Mojang 官方混淆映射。

报告问题

Loom 用 Mercury 来重新映射 Java 源代码,有关重新映射的问题请报告到他们的 Issue 跟踪器,或者去他们的交流频道(irc.esper.net #cadix)讨论。

Loom 0.2.2 - 0.2.5

需要一点 assembly。

  1. 搞清你想要迁移到的映射版本,比如 net.fabricmc:yarn:1.14.1 Pre-Release 2+build.2
  2. 确定这个版本的映射的确存在。这一步有点黑客范,因为目前唯一的方法就是把 build.gradle 中 minecraftmappings 的值改成新版本,再运行任意一个 Gradle 命令(gradle build 就行,即使它会报错),然后把这两项改回来。
  3. 运行这条神奇的魔法命令:gradle migrateMappings -PtargetMappingsArtifact="net.fabricmc:yarn:1.14.1 Pre-Release 2+build.2" -PinputDir=src/main/java -PoutputDir=remappedSrc,其中:
    • targetMappingsArtifact 是指要迁移到的映射版本。运行这条命令时,必须把 build.gradle 设置为 mod 当前的映射版本!
    • inputDir 是输入目录,包含 Java 源代码。
    • outputDir 是输出目录,如果不存在会被创建。
  4. 如果一切正常,把重新映射的源代码复制到输入目录。
  5. 希望万事顺利。

注意:如果报错说找不到文件,试试把完整路径放在引号里。

鉴于我们还没有大规模地破坏中介(Intermediary)或者做类似的傻事(一般来说),以上方法应该在所有的 Minecraft 版本上都通用。

zh_cn/tutorial/migratemappings.txt · Last modified: 2023/02/05 13:10 by hendrix-shen