zh_cn:tutorial:reading_mc_code
Table of Contents
阅读 Minecraft 源代码
阅读 Minecraft 源代码时编写模组时的重要技巧,这是因为:
- Minecraft 的很多东西都没有文档
- 文档和教程很容易过时
阅读 Minecraft 源代码,你首先需要生成源代码。请参考建立模组开发环境中的“生成 Minecraft 源代码”段落。
搜索 Minecraft 类
搜索一个 Minecraft 类,有以下步骤:
Intellij IDEA
Visual Studio Code
- 按
Ctrl + P
打开搜索面板 - 输入前缀
#
再输入类名称
在 Visual Studio Code,你也可以使用 Ctrl + T
来直接打开类搜索。
查找你想要看到的类
定位到你需要岔开的代码部分并不容易。这里是一些小技巧:
- 充分利用 IDE 的查找相关代码的能力,如调用递归、方法递归、类型递归等。
- 看看与你需要制作的模组类似地开源模组是怎么做的。
- 如果你需要添加新内容,可以访问在
net.minecraft.util.registry.Registries
中定义的注册表。 - 记住一切都是从主类(客户端
net.minecraft.client.main.Main
,专用服务器net.minecraft.server.Main
)开始的。 - 在 Minecraft 代码中查找翻译键。
assets/assets/minecraft/lang/en_us.json
包含了原版使用的所有翻译键。
阅读字节码
有时必须要阅读字节码,这是因为
- Mixin 是对字节码进行操作的,而非对源代码。编写复杂的 mixin 时,必须要理解字节码。
- 反编译器(FernFlower)并不完美,有时会产生一些无效的 Java 代码,比如
int i = true;
。
如果你不熟悉 Java 字节码,请参考 JVM 规范。
查看字节码有以下步骤:
Intellij IDEA
- 打开你需要查看字节码的类
- 从主菜单中选择
视图(View)
- 选择
显示字节码(Show Bytecode)
外部工具
如果你的 IDE 不支持字节码查看,可以使用外部工具,如https://github.com/Konloch/bytecode-viewer。
常见问题
生成的源代码在哪里?
在用户 gradle 缓存中(~/.gradle/caches/fabric-loom
)。你可以在 IDE 之外使用源代码 jar。
zh_cn/tutorial/reading_mc_code.txt · Last modified: 2023/08/29 10:28 by solidblock