zh_cn:tutorial:mappings
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
zh_cn:tutorial:mappings [2023/08/16 02:48] – [中间名] wjz_p | zh_cn:tutorial:mappings [2024/04/15 00:57] (current) – solidblock | ||
---|---|---|---|
Line 3: | Line 3: | ||
==== 定义 ==== | ==== 定义 ==== | ||
- | 映射(mapping)定义了类、字段和方法的名称。在常规的loom环境中,使用[[https:// | + | 映射(mapping)定义了类、字段和方法的名称。在常规的 loom 环境中,使用的是 |
==== 使用映射 ==== | ==== 使用映射 ==== | ||
- | 在Loom中,映射定义了你在开发环境中使用的Minecraft类、字段和方法的名称。这些名称可能因开发环境而异,取决于你安装的映射。 | + | 在 Loom 中,映射定义了你在开发环境中使用的 Minecraft 类、字段和方法的名称。这些名称可能因开发环境而异,取决于你安装的映射。 |
- | Yarn是Loom使用的默认映射。随着对贡献的接受,Yarn逐渐改进并接受新的发布。Loom中的映射是使用buildcraft中的'' | + | Yarn 是 Loom 使用的默认映射。随着对贡献的接受,Yarn 逐渐改进并接受新的发布。Loom 中的映射是使 |
- | < | + | < |
dependencies { | dependencies { | ||
[...] | [...] | ||
Line 16: | Line 16: | ||
</ | </ | ||
- | 通过改变您的开发环境中的映射,Minecraft中类、方法和字段的名称和包括的模组都可能会改变,您的代码可能需要更新才能引用更改的名称。[[tutorial: | + | 右改变您的开发环境中的映射,Minecraft |
- | Loom的'' | + | Loom 的 '' |
- | * **' | + | * **' |
- | * **Yarn名称仅应用于开发环境**。在开发环境之外,只存在中间名,也就是说代码不会准确地匹配你看见和写的东西。Loom | + | * **Yarn 名称仅应用于开发环境**。在开发环境之外,只存在中间名,也就是说代码不会准确地匹配你看见和写的东西。Loom 可以透明地为您处理这个转换,但是使用反射([[reflection]])时要谨慎。 |
- | === Mojang的映射 === | + | === Mojang 的映射 === |
- | 对于Loom 0.5,你也可以使用Mojang的官方映射而不是Yarn,像这样: | + | 自 Loom 0.5,你也可以使用 Mojang 的官方映射而不是 Yarn,像这样: |
- | < | + | < |
dependencies { | dependencies { | ||
[...] | [...] | ||
Line 34: | Line 34: | ||
</ | </ | ||
- | Mojang的映射带有可用的但比Yarn更严格的许可证。您需要自行承担使用的风险。 | + | Mojang 的映射带有可用的但比 Yarn 更严格的许可证。您需要自行承担使用的风险。 |
=== 自定义映射 === | === 自定义映射 === | ||
- | 您也可以在您的Gradle项目设置为Fabric Loom使用自定义的微型(tiny)映射。 | + | 您也可以在您的 Gradle 项目设置为 Fabric Loom 使用自定义的微型映射。 |
- | 比如,如果您有需要用于映射的自定义Yarn分支,你可以使用“./ | + | 比如,如果您有需要用于映射的自定义 Yarn 分支,你可以使用“./ |
- | < | + | < |
dependencies { | dependencies { | ||
mappings fileTree(dir: | mappings fileTree(dir: | ||
Line 48: | Line 48: | ||
</ | </ | ||
- | 您可以更改放置映射的目录,使其具有任何自定义名称,只需更改上面的“dir”参数中的名称。注意,如果在映射目录中有映射jar文件以外的任何其他文件,Gradle构建将失败! | + | 您可以更改放置映射的目录,使其具有任何自定义名称,只需更改上面的“dir”参数中的名称。注意,如果在映射目录中有映射 jar 文件以外的任何其他文件,Gradle构建将失败! |
- | ==== 重新映射 ==== | + | ==== 重映射 ==== |
- | 重新映射是将映射应用于代码,从一组名称转换为另一组名称的过程。 Java源代码和已编译Java代码都可以重新映射。 它涉及根据映射更改引用的名称,以及仔细重命名方法以保留替代。 | + | 重映射是将映射应用于代码,从一组名称转换为另一组名称的过程。Java 源代码和已编译的 Java 代码都可以重新映射,涉及根据映射更改引用的名称,以及仔细重命名方法以保留替代。这不会更改代码的功能,但可能会影响[[reflection|反射]]中使用的名称。 |
- | [[https:// | + | [[https:// |
==== 混淆和反混淆 ==== | ==== 混淆和反混淆 ==== | ||
- | Minecraft Java Edition的发行版是混淆的jar文件,这意味着它们是已编译的二进制文件,其中剥离了任何有意义的命名信息,仅保留了裸露的逻辑。 | + | Minecraft Java Edition 的发行版是混淆的 jar 文件,这意味着是已编译的二进制文件,其中剥离了任何有意义的命名信息,仅保留了裸露的逻辑。混淆的目的是防止反向工程并减小文件大小。像 Minecraft 这样的 Java 程序很容易反编译,但是混淆处理剥夺了很多对修改目的有用的信息。也许有人会怀疑一开始如何为 Minecraft 进行开发。 |
- | 像Yarn这样的映射为开发提供了有意义的名称。 使用映射可以理解Minecraft代码并为其创建mod。 映射可以提供类,字段,方法,参数和局部变量的名称。 显然,这些映射并不完美。 | + | 像 Yarn 这样的映射为开发提供了有意义的名称。使用映射可以理解 Minecraft 代码并为其创建模组。映射可以提供类、字段、方法、参数和局部变量的名称。显然,这些映射并不完美。完成 Minecraft |
==== 中间名 ==== | ==== 中间名 ==== | ||
- | Minecraft的混淆特性是,它在Minecraft版本之间并不总是一致的。在Minecraft的一个版本中,一个类可能被称为'' | + | Minecraft 的混淆有个特点,在 Minecraft 版本之间并不总是一致。在 Minecraft 的一个版本中,一个类可能被称为 '' |
- | Java代码可以针对一个库版本进行编译,但仍可与另一个版本一起使用,从而使库的两个版本可以二进制兼容。简而言之,如果库公开了至少相同的类,相同的方法和具有相同名称的字段,则将实现二进制兼容性。当使用Minecraft作为mods的库时,由于缺乏二进制兼容性,Minecraft的混淆问题(为mod在不同游戏版本间的兼容性)带来了挑战。 | + | Java 代码可以针对一个库版本进行编译,但仍可与另一个版本一起使用,从而使库的两个版本可以二进制兼容。简而言之,如果库公开了至少相同的类,相同的方法和具有相同名称的字段,则将实现二进制兼容性。当使用 Minecraft 作为模组的库时,由于缺乏二进制兼容性,Minecraft 的混淆问题(为模组在不同游戏版本间的兼容性)带来了挑战。 |
- | 中介为Minecraft版本之间的Minecraft内部定义稳定名称。中介名称的目的是始终引用相同的类,字段或方法。与纱线名称不同,中间名称没有意义,而是遵循数字模式,例如'' | + | 中间名在 |
- | 作为稳定的映射,中间名可以使Minecraft二进制兼容多个版本(例如快照版本)!但需要注意的是,它仅对于版本之间未更改的游戏部分才保证兼容性。当安装在开发环境之外时,Fabric Loader通过在游戏开始之前重新映射Minecraft(和Realms客户端)来为环境提供中间名称。通过查看安装了Fabric Loader的生产环境中的崩溃报告可以观察到此情况,该报告将包含中间名称。用Loom所应用的中间名称编译的Mod与此环境自然兼容。 | + | 作为稳定的映射,中间名可以使 Minecraft 二进制兼容多个版本(例如快照版本)!但需要注意的是,它仅对于版本之间未更改的游戏部分才保证兼容性。当安装在开发环境之外时,Fabric Loader 通过在游戏开始之前重映射 Minecraft(和 Realms 客户端)来为环境提供中间名称。通过查看安装了 Fabric Loader 的生产环境中的崩溃报告可以观察到此情况,该报告将包含中间名称。用 Loom 所应用的中间名称编译的模组与此环境自然兼容。 |
zh_cn/tutorial/mappings.1692154122.txt.gz · Last modified: 2023/08/16 02:48 by wjz_p