如何使用 MCP GitHub?全面指南与示例
如何使用 MCP GitHub?全面指南与示例
Minecraft 是一款风靡全球的沙盒游戏,其强大的可定制性深受玩家喜爱。除了游戏本身的内容外,Minecraft 社区还开发了大量的模组(Mods)和数据包(Datapacks),极大地扩展了游戏的可玩性。MCP(Minecraft Command Processor)作为 Minecraft 社区的一个重要项目,旨在提供一个稳定、可靠且易于使用的工具链,用于反编译、修改和重新编译 Minecraft 的 Java 代码。
本文将深入探讨 MCP GitHub 的使用方法,面向不同层次的用户,从基础概念到高级技巧,提供全面的指南和示例。无论你是刚接触 MCP 的新手,还是希望深入了解其内部机制的开发者,都能从本文中获益。
1. MCP 简介与核心概念
在深入了解 MCP GitHub 的使用之前,我们需要先了解一些基本概念:
- Minecraft Java 版 (Minecraft: Java Edition): 本文讨论的 MCP 主要针对 Minecraft 的 Java 版本,这是最初的、也是可定制性最强的版本。
- 反编译 (Decompilation): Minecraft 的 Java 代码是以编译后的 .class 文件的形式发布的。反编译是指将这些 .class 文件转换回可读的 Java 源代码(.java 文件)的过程。
- 混淆 (Obfuscation): 为了保护代码不被轻易理解和修改,Minecraft 的官方代码经过了混淆处理。混淆会将类名、方法名、变量名等替换成无意义的短字符串(如 a, b, c),使得代码难以阅读。
- 映射 (Mappings): MCP 的核心功能之一是提供映射文件,将混淆后的名称与可读的、有意义的名称对应起来。例如,将混淆后的方法名
a
映射回tick
。 - 补丁 (Patches): 补丁文件记录了对原始 Minecraft 代码所做的修改。MCP 使用补丁来管理代码的变更,使得修改和更新更加方便。
- 重新编译 (Recompilation): 在修改完代码后,需要将修改后的 Java 代码重新编译成 .class 文件,以便 Minecraft 能够加载和运行。
MCP 的作用:
MCP 提供了一套完整的工具链,简化了 Minecraft 代码的修改流程:
- 反编译 Minecraft 代码: 将官方的 .class 文件转换成可读的 Java 代码。
- 提供映射文件: 将混淆后的名称还原为可读的名称。
- 管理补丁: 记录和应用对代码的修改。
- 重新编译代码: 将修改后的代码编译回 .class 文件。
- 提供开发环境: 方便开发者进行模组开发和核心代码修改。
2. MCP GitHub 仓库结构
MCP 的主要开发活动都在 GitHub 上进行。要使用 MCP,我们需要了解其 GitHub 仓库的结构:
-
主仓库 (MCPConfig): https://github.com/MinecraftForge/MCPConfig 这是 MCP 的核心仓库,包含了配置文件、脚本、映射文件和补丁等。
-
其他相关仓库:
- Mappings: 存储映射文件的仓库,通常不直接与用户交互,而是由 MCPConfig 自动管理。
- ForgeFlower: MCP 使用的 Fernflower 反编译器的一个分支。
- SpecialSource: 用于处理继承关系和泛型的工具。
- Hashed: 用于处理哈希版本的工具。
3. 安装与配置 MCP
MCP 的安装和配置相对简单,但需要一些准备工作:
3.1. 前提条件
- Java Development Kit (JDK): MCP 需要 JDK 来编译 Java 代码。请确保安装了 JDK 8 或更高版本(建议使用 JDK 8,因为 Minecraft 1.12.2 及以下版本通常与 JDK 8 兼容性最好)。
- Python: MCP 的一些脚本使用 Python 编写。请确保安装了 Python 3。
- Git: 用于从 GitHub 克隆 MCP 仓库。
3.2. 下载与设置
-
克隆 MCPConfig 仓库:
打开命令行或终端,执行以下命令:
bash
git clone https://github.com/MinecraftForge/MCPConfig.git这将在当前目录下创建一个名为
MCPConfig
的文件夹,其中包含了 MCP 的所有文件。 -
进入 MCPConfig 目录:
bash
cd MCPConfig -
(可选)切换到特定版本
MCPConfig仓库包含了多个Minecraft版本的配置。你可以通过git tag
查看所有可用的版本标签,然后使用git checkout
切换到你需要的版本。
bash
git tag
git checkout <version_tag> # 比如 git checkout mcp940 -
初始化设置
在MCPConfig目录下,运行初始化脚本。根据你的操作系统,选择运行
setup.sh
(Linux/macOS)或setup.bat
(Windows)。bash
./setup.sh # Linux/macOS
setup.bat # Windows
这个脚本将会下载所需的依赖项, 包括反编译器,一些库文件等。
4. 使用 MCP 进行反编译、修改和重新编译
4.1. 反编译 Minecraft
-
准备 Minecraft JAR 文件:
找到你的 Minecraft 安装目录下的
versions
文件夹。选择你想要修改的版本(例如1.12.2
),进入该版本的文件夹。复制该文件夹下的.jar
文件(例如1.12.2.jar
)到 MCPConfig 目录下的jars
文件夹中。
注意:jars
文件夹可能需要你手动创建。 -
运行反编译命令:
在 MCPConfig 目录下,运行以下命令:
Linux/ macOS:
bash
./decompile.sh
Windows:
bash
decompile.bat这个过程可能需要几分钟到几十分钟,具体取决于你的电脑性能和 Minecraft 版本。
反编译完成后,你将在
src
文件夹中看到反编译后的 Minecraft 源代码。
4.2. 修改代码
现在,你可以使用你喜欢的 Java 编辑器(如 IntelliJ IDEA, Eclipse, VS Code)打开 src
文件夹中的源代码进行修改。
-
使用映射: MCP 会自动应用映射文件,将混淆后的名称还原为可读的名称。你可以通过查看
conf
文件夹中的映射文件(如methods.csv
,fields.csv
)来了解映射关系。 -
创建补丁: 在修改代码时,MCP 会自动跟踪你的修改,并生成补丁文件。这些补丁文件位于
patches
文件夹中。
4.3. 重新编译代码
修改完代码后,你需要将代码重新编译成 .class 文件:
-
运行重新编译命令:
在 MCPConfig 目录下,运行以下命令:
Linux/ macOS:
bash
./recompile.sh
Windows:
bash
recompile.bat这将编译修改后的代码,并将编译后的 .class 文件输出到
reobf
文件夹中。
4.4. 重新混淆(Reobfuscation)
重新编译后,我们需要将修改过的代码进行重新混淆,以确保其与原始的Minecraft代码兼容。
在 MCPConfig 目录下,运行以下命令:
Linux/ macOS:
bash
./reobfuscate.sh
Windows:
bash
reobfuscate.bat
重新混淆后的文件位于reobf/minecraft
4.5. 测试修改
-
创建 Minecraft 客户端副本:
在 Minecraft 安装目录的
versions
文件夹中,复制你修改的版本的文件夹(例如1.12.2
),并重命名为一个新的名称(例如1.12.2-modified
)。 -
替换 .class 文件:
将
reobf/minecraft
文件夹中的所有文件复制到1.12.2-modified
文件夹中,替换原有的 .class 文件。
注意: 你可能需要将.jar
文件解压,替换里面的class文件后重新打包。或者使用支持直接替换jar内文件的压缩软件。 -
修改 JSON 文件:
在
1.12.2-modified
文件夹中,找到与文件夹同名的.json
文件(例如1.12.2-modified.json
)。用文本编辑器打开该文件。找到
"id"
字段,将其值修改为新的文件夹名称(例如"1.12.2-modified"
)。 -
启动 Minecraft:
启动 Minecraft 启动器,选择你创建的修改后的版本(例如
1.12.2-modified
),然后启动游戏。如果一切正常,你的修改应该已经生效。
5. 高级用法
5.1. 使用 Forge 与 MCP
Forge 是 Minecraft 最流行的模组加载器之一。如果你想开发 Forge 模组,可以将 MCP 与 Forge 结合使用。
-
下载 Forge MDK (Mod Development Kit):
从 Forge 官网下载与你的 Minecraft 版本对应的 MDK。
-
解压 MDK:
将 MDK 解压到一个单独的文件夹中。
-
运行 Forge 的 setupDecompWorkspace 任务:
在Forge MDK的目录下, 运行:
Linux/ macOS:
bash
./gradlew setupDecompWorkspace
Windows:
bash
gradlew setupDecompWorkspace
这个命令会自动下载和配置 MCP,并将 Forge 的代码与 MCP 集成。 -
使用IDE
运行./gradlew eclipse
或者./gradlew idea
来生成对应IDE的项目文件。然后你就可以使用IDE打开项目进行开发了。
5.2. 更新 MCP
MCP 会不断更新,以修复错误、添加新功能和支持新的 Minecraft 版本。要更新 MCP,只需在 MCPConfig 目录下运行以下命令:
bash
git pull
这将从 GitHub 拉取最新的 MCP 代码。更新后,你可能需要重新运行 ./setup.sh
或 setup.bat
来更新依赖项。
5.3. 使用不同的映射
MCP 默认使用官方的映射文件。如果你想使用其他的映射文件(例如社区维护的映射),可以在 conf
文件夹中找到并修改 mcp.cfg
文件。在该文件中,你可以指定不同的映射文件来源。
5.4. 参与 MCP 开发
如果你对 MCP 的开发感兴趣,可以参与到 MCP 的 GitHub 项目中。你可以提交错误报告、提出功能建议,甚至贡献代码。
6. 常见问题解答
-
Q: 反编译失败怎么办?
A: 确保你已经安装了 JDK 和 Python,并且版本符合要求。检查你的 Minecraft JAR 文件是否正确,并且没有损坏。如果问题仍然存在,可以在 MCP 的 GitHub 仓库中搜索类似的问题,或者提交一个 issue。
-
Q: 修改后的代码无法正常运行怎么办?
A: 仔细检查你的代码修改是否正确,是否有语法错误或逻辑错误。确保你已经正确地重新编译和重新混淆了代码。如果问题仍然存在,尝试使用调试器来查找问题所在。
-
Q: 如何找到某个类或方法?
A: 使用你的 Java 编辑器的搜索功能。你可以搜索类名、方法名、变量名,或者使用 MCP 提供的映射文件来查找混淆后的名称。
-
Q: MCP 支持哪些 Minecraft 版本?
A: MCP 支持多个 Minecraft 版本,具体支持的版本列表可以在 MCPConfig 仓库的 README 文件中找到。
7. 总结
MCP 是 Minecraft 社区的一个重要工具,为 Minecraft 代码的修改和模组开发提供了强大的支持。本文详细介绍了 MCP 的安装、配置、使用方法,以及一些高级技巧。希望本文能够帮助你更好地理解和使用 MCP,享受 Minecraft 的无限可能性。