This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
zh_cn:tutorial:mappings [2020/11/17 03:25] solidblock [介绍] |
zh_cn:tutorial:mappings [2020/11/17 03:48] (current) solidblock [使用映射] |
||
---|---|---|---|
Line 5: | Line 5: | ||
映射(mapping)定义了类、字段和方法的名称。在常规的loom环境中,使用[[https://github.com/FabricMC/yarn|Yarn]]映射,这是社区决定的,它为Minecraft的代码库提供了有意义的名称。[[https://github.com/FabricMC/intermediary|Intermediary]]也是Fabric使用的一个必要的映射类型。对映射的需要来自Minecraft发布的混淆(obfuscation),这代表了多个挑战。重映射(remapping)是对编译的类或者源代码文件应用映射的过程。 | 映射(mapping)定义了类、字段和方法的名称。在常规的loom环境中,使用[[https://github.com/FabricMC/yarn|Yarn]]映射,这是社区决定的,它为Minecraft的代码库提供了有意义的名称。[[https://github.com/FabricMC/intermediary|Intermediary]]也是Fabric使用的一个必要的映射类型。对映射的需要来自Minecraft发布的混淆(obfuscation),这代表了多个挑战。重映射(remapping)是对编译的类或者源代码文件应用映射的过程。 | ||
==== 使用映射 ==== | ==== 使用映射 ==== | ||
+ | 在Loom中,映射定义了你在开发环境中使用的Minecraft类、字段和方法的名称。这些名称可能因开发环境而异,取决于你安装的映射。 | ||
- | 在Loom中,映射定义了开发环境中使用的Minecraft类,字段和方法的名称。 根据安装的映射,这些名称可能因开发环境而异。 | + | Yarn是Loom使用的默认映射。随着对贡献的接受,Yarn逐渐改进并接受新的发布。Loom中的映射是使用buildcraft中的''mappings''依赖配置指定的,可以通过更新依赖来更新。Minecraft以及包含在模组增强依赖配置中的依赖项(如''modCompile'')都是通过映射来重映射的。不在Yarn中映射的类、字段和方法,会以中间名显示,如''class_1234''、''method_1234''、''field_1234''。 |
- | + | ||
- | 毛线是Loom使用的默认映射。 随着贡献的增加,纱线会逐渐改进并获得新的版本。 使用构建脚本中的“映射”依赖项配置来指定Loom中的映射,并且可以通过更新依赖项来进行更新。 Minecraft以及mod增强的依赖项配置(例如 ''modCompile'' )中包含的依赖项均通过映射进行映射。 未在Yarn中映射的类,字段和方法的中间名称为''class_1234'',''method_1234''和''field_1234''。 | + | |
<code> | <code> | ||
Line 17: | Line 16: | ||
</code> | </code> | ||
- | 通过更改开发环境中的映射,可以预期Minecraft中的类,方法和字段的名称以及所有包含的mod均已更改,并且可能必须更新代码以引用更改后的名称。 [[tutorial:migratemappings|此过程可以部分自动化]]。 您还必须运行''genSources''以使用更新的映射访问Minecraft源。 | + | 通过改变您的开发环境中的映射,Minecraft中类、方法和字段的名称和包括的模组都可能会改变,您的代码可能需要更新才能引用更改的名称。[[tutorial:migratemappings|这一过程可以部分自动化]]。你可能也需要运行''genSources''来运行带有更新的映射的Minecraft源代码。 |
- | Loom的''remapJar''任务将产生主要的mod工件,它是使用中间名称构建的jar。 此外,如果存在''sourcesJar''任务,则''remapSourcesJar''将使用中间名称生成一个源jar。 这些jar可以安装为mod或包含在具有''modCompile''依赖项配置的开发环境中。 | + | Loom的''remapJar''任务会提供原始的模组成品,这个成品是使用中间名的jar文件。此外,如果有''sourcesJar''任务,''remapSourcesJar''会产生使用中间名的源代码jar。这些jar文件都可以作为模组安装,或者连同''modCompile''依赖配置一起被包括在开发环境中。 |
- | * **'-dev'jar(''jar''任务输出)不使用中介名称,因此没有用。**不能将其作为mod安装在开发环境之外,并且只能在 具有匹配映射的开发环境。 应该改用常规jar(''remapJar''任务输出),并使用经过mod增强的依赖项配置(例如''modCompile'')将其安装在开发环境中。 | + | |
- | * **纱线名称仅在开发环境中应用**。 在开发环境之外,仅存在中间名称,这意味着代码将与您看到和编写的内容完全不匹配。 Loom可以为您透明地处理此过渡,但是在使用反射时要格外小心。 | + | * **'-dev' jar(''jar''任务的输出)不使用中间名,因此无用。**它不可以被安装为开发环境之外的模组,且只能在带有符合的映射的开发环境中起作用。常规的jar文件(''remapJar''任务输出)才应被使用并使用像''modCompile''这样的模组增强依赖项安装在开发环境中。 |
+ | * **Yarn名称仅应用于开发环境**。在开发环境之外,只存在中间名,也就是说代码不会准确地匹配你看见和写的东西。Loom transparently可以为您处理这个转换,但是使用反射(reflection)时要谨慎。 | ||
+ | |||
+ | === Mojang的映射 === | ||
+ | |||
+ | 对于Loom 0.5,你也可以使用Mojang的官方映射而不是Yarn,像这样: | ||
+ | |||
+ | <code> | ||
+ | dependencies { | ||
+ | [...] | ||
+ | mappings minecraft.officialMojangMappings() | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Mojang的映射带有可用的但比Yarn更严格的许可证。您需要自行承担使用的风险。 | ||
=== 自定义映射 === | === 自定义映射 === | ||
- | You can use custom tiny mappings for Fabric Loom for your Gradle project setup. | + | 您也可以在您的Gradle项目设置为Fabric Loom使用自定义的微型(tiny)映射。 |
+ | |||
+ | 比如,如果您有需要用于映射的自定义Yarn分支,你可以使用“./gradlew build”命令建立yarn,拿出“build/libs”目录中的jar文件,然后移动到您的Gradle项目中的“mapping”文件夹下。然后,将您的映射依赖项更改为: | ||
- | 例如,如果您有一个要用于映射的自定义毛线分支,则可以使用'' ./gradlew build''命令纱,取出'' build / libs''目录中的jar文件,然后将其移动到 Gradle项目中的''映射''文件夹。 然后,将映射依赖项更改为: | ||
<code> | <code> | ||
dependencies { | dependencies { | ||
Line 34: | Line 48: | ||
</code> | </code> | ||
- | 您可以将放置映射的目录更改为任何自定义名称。 只需在上面的''dir''参数中更改名称即可。 请注意,如果映射目录中的映射jar除了其他文件,则Gradle构建将失败! | + | 您可以更改放置映射的目录,使其具有任何自定义名称,只需更改上面的“dir”参数中的名称。注意,如果在映射目录中有映射jar文件以外的任何其他文件,Gradle构建将失败! |
==== 重新映射 ==== | ==== 重新映射 ==== |