为 Forge 做贡献:入门

为 Forge 做贡献:入门

如果你决定为 Forge 做贡献,需要经过一些特别的开发准备。普通模组开发环境不足以直接处理 Forge 代码库;本指南介绍如何配置环境并开始改进 Forge。

Forge 仓库 Fork、Clone、独立分支和环境配置流程;修改 Minecraft 源码只在 Forge 子项目进行,经测试后按需运行 genPatches 再提交 PR

原创说明图,依据 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 工作区的大部分工作。

  1. 打开终端或命令提示符,进入克隆的派生仓库目录。
  2. 输入 ./gradlew setup 并按回车,等待 ForgeGradle 完成。
  3. 输入 ./gradlew genEclipseRuns 并按回车,再次等待 ForgeGradle 完成。
  4. 打开 Eclipse 工作区,依次选择 File -> Import -> General -> Existing Gradle Project。
  5. 在弹出的对话框中,将“Project root directory”设为仓库目录。
  6. 点击“Finish”完成导入。

这样就可以在 Eclipse 中开始工作,无需额外步骤即可运行测试模组。像运行其他项目一样点击“Run”,并选择适当的运行配置。

IntelliJ IDEA

JetBrains 的 IDE 集成支持 Gradle,这是 Forge 选用的构建系统。不过,由于 Minecraft 模组开发的一些特殊性,还需要额外步骤才能让一切正常工作。

IDEA 2021 及以后版本
  1. 启动 IntelliJ IDEA 2021。如果已打开其他项目,使用 File -> Close project 关闭它。
  2. 在“Welcome to IntelliJ IDEA”窗口的项目选项卡中,点击右上角的“Open”,选择之前克隆的 MinecraftForge 文件夹。
  3. 如果出现提示,点击“Trust Project”。
  4. IDEA 完成项目导入和文件索引后,运行 Gradle 的 setup 任务:打开右侧 Gradle 侧栏,展开 forge 项目树,依次选择 Tasks、other,双击 Forge -> Tasks -> other -> setup 下的 setup(也可能显示为 MinecraftForge[Setup])。
  5. 生成运行配置:在 Gradle 侧栏的项目树中,双击 Forge -> Tasks -> forgegradle runs -> genIntellijRuns 下的 genIntellijRuns(也可能显示为 MinecraftForge[genIntellijRuns])。如果尚未做任何修改就在构建时遇到许可错误,运行 updateLicenses 任务可能有帮助;该任务也位于 Forge -> Tasks -> other。
IDEA 2019–2020

这些版本的配置与 IDEA 2021 有几处细微差别:

  1. 将 Forge 的 build.gradle 作为 IDEA 项目导入。在欢迎界面点击 Import Project,然后选择 build.gradle 文件。
  2. 导入和索引完成后,运行 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。