为 Forge 做贡献:入门
如果你决定为 Forge 做贡献,需要经过一些特别的开发准备。普通模组开发环境不足以直接处理 Forge 代码库;本指南介绍如何配置环境并开始改进 Forge。
原创说明图,依据 Forge 1.21.x 官方文档 绘制。
派生并克隆仓库
与大多数大型开源项目一样,Forge 托管在 GitHub 上。如果你以前参与过其他项目,可能已经熟悉这个过程,可以直接跳到下一节。对于刚开始通过 Git 协作的人,下面介绍两个简单步骤。
注意:本指南假设你已经拥有 GitHub 账号。如果没有,可在注册页面创建账号。此外,本指南不是 Git 教程;如果使用 Git 遇到困难,请先参考其他资料。
派生仓库
首先,在 MinecraftForge 仓库右上角点击“Fork”。如果你属于某个组织,请选择用于托管派生仓库的账号。
派生仓库是必要的,因为并非每个 GitHub 用户都能自由访问每个仓库。你将创建原仓库的副本,以便稍后通过拉取请求(Pull Request)贡献修改;下文会进一步介绍。
克隆仓库
派生仓库后,需要把它克隆到本机,才能实际修改。使用你喜欢的 Git 客户端,将派生仓库克隆到所选目录。下面的命令是一个通用示例,应该能在正确配置的系统上运行,它会在当前目录下创建名为 MinecraftForge 的目录。请将 <User> 替换为你的用户名:
git clone https://github.com/<User>/MinecraftForge
检出正确的分支
派生并克隆仓库是开发 Forge 唯一必需的步骤。不过,为了更方便地创建拉取请求,最好使用分支。
建议为计划提交的每个 PR 创建并检出独立分支。这样,在继续处理较旧补丁时,仍可保留最新的 Forge 修改,供新的 PR 使用。完成后,就可以配置开发环境了。
配置环境
根据你选择的 IDE,成功配置开发环境所需的推荐步骤有所不同。
Eclipse
由于 Eclipse 工作区的工作方式,ForgeGradle 能完成开始使用 Forge 工作区的大部分工作。
- 打开终端或命令提示符,进入克隆的派生仓库目录。
- 输入
./gradlew setup并按回车,等待 ForgeGradle 完成。 - 输入
./gradlew genEclipseRuns并按回车,再次等待 ForgeGradle 完成。 - 打开 Eclipse 工作区,依次选择
File -> Import -> General -> Existing Gradle Project。 - 在弹出的对话框中,将“Project root directory”设为仓库目录。
- 点击“Finish”完成导入。
这样就可以在 Eclipse 中开始工作,无需额外步骤即可运行测试模组。像运行其他项目一样点击“Run”,并选择适当的运行配置。
IntelliJ IDEA
JetBrains 的 IDE 集成支持 Gradle,这是 Forge 选用的构建系统。不过,由于 Minecraft 模组开发的一些特殊性,还需要额外步骤才能让一切正常工作。
IDEA 2021 及以后版本
- 启动 IntelliJ IDEA 2021。如果已打开其他项目,使用
File -> Close project关闭它。 - 在“Welcome to IntelliJ IDEA”窗口的项目选项卡中,点击右上角的“Open”,选择之前克隆的 MinecraftForge 文件夹。
- 如果出现提示,点击“Trust Project”。
- IDEA 完成项目导入和文件索引后,运行 Gradle 的
setup任务:打开右侧 Gradle 侧栏,展开 forge 项目树,依次选择 Tasks、other,双击Forge -> Tasks -> other -> setup下的setup(也可能显示为MinecraftForge[Setup])。 - 生成运行配置:在 Gradle 侧栏的项目树中,双击
Forge -> Tasks -> forgegradle runs -> genIntellijRuns下的genIntellijRuns(也可能显示为MinecraftForge[genIntellijRuns])。如果尚未做任何修改就在构建时遇到许可错误,运行updateLicenses任务可能有帮助;该任务也位于Forge -> Tasks -> other。
IDEA 2019–2020
这些版本的配置与 IDEA 2021 有几处细微差别:
- 将 Forge 的
build.gradle作为 IDEA 项目导入。在欢迎界面点击Import Project,然后选择build.gradle文件。 - 导入和索引完成后,运行 Gradle
setup任务。可以打开右侧 Gradle 侧栏,展开forge项目树,选择Tasks、other并双击setup(也可能显示为MinecraftForge[Setup]);也可以连按两次 Ctrl,在弹出的Run命令窗口中输入gradle setup。
之后可通过 forge_client Gradle 任务(Tasks -> fg_runs -> forge_client)运行 Forge:右键任务,按需选择 Run 或 Debug。现在应该可以使用对 Forge 和原版代码库所作的修改来开发模组了。
修改和提交拉取请求
配置好开发环境后,就可以修改 Forge 代码库。不过编辑项目代码时需要避开一些陷阱。
最重要的是:如果要编辑 Minecraft 源代码,必须只在“Forge”子项目中修改。“Clean”项目中的任何修改都会干扰 ForgeGradle 和补丁生成,可能造成严重后果,使环境完全无法使用。要确保环境顺利运行,只在“Forge”项目中编辑代码!
生成补丁
修改代码并充分测试后,可以生成补丁。只有处理 Minecraft 代码库(即“Forge”项目)时才需要此步骤,但它对修改在其他环境中生效至关重要。Forge 只将修改过的内容注入原版 Minecraft,因此需要适当格式的修改内容。ForgeGradle 可以为你生成可提交的变更集。
在 IDE 或命令行中运行 genPatches Gradle 任务即可开始生成补丁。完成后便可以提交所有修改(确保不要加入不必要的文件),并提交拉取请求。
拉取请求
贡献被加入 Forge 之前的最后一步是拉取请求,简称 PR。这是正式请求将派生仓库的修改合并到正式代码库。创建 PR 时,访问这个 GitHub 页面并按照提示操作。此时合理使用分支的好处就会显现,因为你能精确选择要提交的修改。
注意:拉取请求受到规则约束,不会无条件接受。请阅读此文档,了解更多信息并提高 PR 质量(原文链接指向 1.13.x 分支,应结合目标分支的最新贡献要求);若想提高被接受的机会,还请遵循PR 指南。
原文:Getting Started。