zh_cn:tutorial:mappings
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
zh_cn:tutorial:mappings [2020/11/17 03:48] – [使用映射] solidblock | zh_cn:tutorial:mappings [2023/08/16 02:48] – [中间名] wjz_p | ||
---|---|---|---|
Line 58: | Line 58: | ||
==== 混淆和反混淆 ==== | ==== 混淆和反混淆 ==== | ||
- | Minecraft Java Edition的发行版是混淆的jar文件,这意味着它们是已编译的二进制文件,其中剥离了任何有意义的命名信息,仅保留了裸露的逻辑。 模糊处理的动机是防止反向工程并减小文件大小。 像Minecraft这样的Java程序很容易反编译,但是混淆处理剥夺了很多对修改目的有用的信息。 也许有人会怀疑一开始如何为Minecraft进行开发。 | + | Minecraft Java Edition的发行版是混淆的jar文件,这意味着它们是已编译的二进制文件,其中剥离了任何有意义的命名信息,仅保留了裸露的逻辑。 模糊处理的目的是防止反向工程并减小文件大小。 像Minecraft这样的Java程序很容易反编译,但是混淆处理剥夺了很多对修改目的有用的信息。 也许有人会怀疑一开始如何为Minecraft进行开发。 |
- | 像Yarn这样的映射为开发提供了有意义的名称。 使用映射可以理解Minecraft代码并为其创建mod。 映射可以提供类,字段,方法,参数和局部变量的名称。 显然,这些映射并不完美。 绘制《我的世界》的整个地图需要来自多个贡献者的大量猜测。 映射可能不完整,有时会随着找到更准确的名称而更改。 | + | 像Yarn这样的映射为开发提供了有意义的名称。 使用映射可以理解Minecraft代码并为其创建mod。 映射可以提供类,字段,方法,参数和局部变量的名称。 显然,这些映射并不完美。 绘制《我的世界》的整个映射表需要来自多个贡献者的大量猜测。 映射可能不完整,有时会随着找到更准确的名称而更改。 |
==== 中间名 ==== | ==== 中间名 ==== | ||
Line 66: | Line 66: | ||
Minecraft的混淆特性是,它在Minecraft版本之间并不总是一致的。在Minecraft的一个版本中,一个类可能被称为'' | Minecraft的混淆特性是,它在Minecraft版本之间并不总是一致的。在Minecraft的一个版本中,一个类可能被称为'' | ||
- | Java代码可以针对一个库版本进行编译,但仍可与另一个版本一起使用,从而使库的两个版本可以二进制兼容。简而言之,如果库公开了至少相同的类,相同的方法和具有相同名称的字段,则将实现二进制兼容性。当使用Minecraft作为mods的库时,由于缺乏二进制兼容性,Minecraft的混淆问题带来了挑战。 | + | Java代码可以针对一个库版本进行编译,但仍可与另一个版本一起使用,从而使库的两个版本可以二进制兼容。简而言之,如果库公开了至少相同的类,相同的方法和具有相同名称的字段,则将实现二进制兼容性。当使用Minecraft作为mods的库时,由于缺乏二进制兼容性,Minecraft的混淆问题(为mod在不同游戏版本间的兼容性)带来了挑战。 |
中介为Minecraft版本之间的Minecraft内部定义稳定名称。中介名称的目的是始终引用相同的类,字段或方法。与纱线名称不同,中间名称没有意义,而是遵循数字模式,例如'' | 中介为Minecraft版本之间的Minecraft内部定义稳定名称。中介名称的目的是始终引用相同的类,字段或方法。与纱线名称不同,中间名称没有意义,而是遵循数字模式,例如'' | ||
- | 作为稳定的映射,中间名可以使Minecraft二进制兼容多个版本(例如快照版本)!仅对于版本之间未更改的游戏部分,才保证兼容性。当安装在开发环境之外时,Fabric Loader通过在游戏开始之前重新映射Minecraft(和Realms客户端)来为环境提供中间名称。通过查看安装了Fabric Loader的生产环境中的崩溃报告可以观察到此情况,该报告将包含中间名称。用Loom所应用的中间名称编译的Mod与此环境自然兼容。 | + | 作为稳定的映射,中间名可以使Minecraft二进制兼容多个版本(例如快照版本)!但需要注意的是,它仅对于版本之间未更改的游戏部分才保证兼容性。当安装在开发环境之外时,Fabric Loader通过在游戏开始之前重新映射Minecraft(和Realms客户端)来为环境提供中间名称。通过查看安装了Fabric Loader的生产环境中的崩溃报告可以观察到此情况,该报告将包含中间名称。用Loom所应用的中间名称编译的Mod与此环境自然兼容。 |
zh_cn/tutorial/mappings.txt · Last modified: 2024/04/15 00:57 by solidblock