====== 更新 Java 代码库中的 Yarn 映射 ====== Loom 能够半自动地升级 Java 代码库中使用的映射。因为 Yarn 经常改动,所以这个工具对于令代码库与最新的改动同步更新来讲非常有用。 **注意**:Mixin 和反射目前不能自动处理 ,需要手动更新。 ==== Loom 0.2.6 及更高版本 ==== 假如你想要从 1.14.4 迁移到 19w46b。 - 到[[https://fabricmc.net/versions.html|这里]],选择你想要迁移到的版本,然后复制 ''yarn_mappings'' 的值,比如 ''19w46b+build.1''。先千万不要更改 gradle.properties 和 build.gradle。 - 在你 gradle 项目的根目录下,运行 ''gradlew migrateMappings %%--%%mappings %%"%%19w46b+build.1%%"%%'' - 迁移之后的源代码会出现在 ''remappedSrc'',检验一下迁移生成的代码是否有效。 - 把 ''remappedSrc'' 中的源代码复制到原本的文件夹。记得先备份原本的源代码,以防万一。 - 根据[[https://fabricmc.net/versions.html|这个网站]]的说明更新 gradle.properties 文件。 - 在 IDE 里重新加载 gradle 工程。 - 检查并且更新那些可能已经失效的 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::v2''。使用 ''net.minecraft:mappings: '' 来迁移到 Mojang 官方混淆映射。 === 报告问题 === Loom 用 [[https://github.com/CadixDev/Mercury|Mercury]] 来重新映射 Java 源代码,有关重新映射的问题请报告到他们的 [[https://github.com/CadixDev/Mercury/issues|Issue 跟踪器]],或者去他们的交流频道(irc.esper.net #cadix)讨论。 ===== Loom 0.2.2 - 0.2.5 ===== 需要一点 assembly。 - 搞清你想要迁移到的映射版本,比如 ''net.fabricmc:yarn:1.14.1 Pre-Release 2+build.2''。 - 确定这个版本的映射的确存在。这一步有点黑客范,因为目前唯一的方法就是把 build.gradle 中 ''minecraft'' 和 ''mappings'' 的值改成新版本,再运行任意一个 Gradle 命令(''gradle build'' 就行,即使它会报错),然后把这两项改回来。 - 运行这条神奇的魔法命令:''%%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'' 是输出目录,如果不存在会被创建。 - 如果一切正常,把重新映射的源代码复制到输入目录。 - 希望万事顺利。 //注意:如果报错说找不到文件,试试把完整路径放在引号里。// 鉴于我们还没有大规模地破坏中介(Intermediary)或者做类似的傻事(一般来说),以上方法应该在所有的 Minecraft 版本上都通用。