Forge 入门
如果你从未制作过 Forge Mod,本节将介绍搭建 Forge 开发环境所需的基本信息。文档的其余部分介绍接下来可以做什么。
原创说明图,依据 Forge 1.21.x 官方文档 绘制。
前提条件
- 安装 Java 21 开发工具包(JDK)和 64 位 Java 虚拟机(JVM)。Forge 推荐并正式支持 Eclipse Temurin。原文要求 Java 21,但其链接指向 Temurin 17,请选择符合 Java 21 要求的版本。
- 熟悉集成开发环境(IDE);推荐使用支持 Gradle 集成的 IDE。
从零开始制作 Mod
-
从 Forge 文件站下载 Mod 开发工具包(MDK):点击“Mdk”,等待一段时间后点击右上角的“Skip”。建议尽可能下载最新的 Forge 版本。
-
将 MDK 解压到空目录。这个目录将成为 Mod 的项目目录,其中应包含若干 Gradle 文件和带有示例 Mod 的
src子目录。以下文件可以在不同 Mod 项目之间复用:
gradle子目录、build.gradle、gradlew、gradlew.bat和settings.gradle。src不必复制到其他工作区;如果之后才创建 Java 目录src/main/java和资源目录src/main/resources,可能需要刷新 Gradle 项目。 -
打开所选 IDE。Forge 明确支持 Eclipse 和 IntelliJ IDEA,并提供 Visual Studio Code 的运行配置,但也可以使用 Apache NetBeans、Vim、Emacs 等其他环境。Eclipse 和 IntelliJ IDEA 默认安装并启用的 Gradle 集成会在导入或打开项目时完成初始设置,包括从 Mojang、MinecraftForge 等下载所需包。Visual Studio Code 需要“Gradle for Java”插件。
修改
build.gradle、settings.gradle等 Gradle 文件后,几乎都需要调用 Gradle 重新评估项目。有些 IDE 提供“Refresh”按钮,也可以通过终端运行gradlew。 -
为 IDE 生成运行配置:
- Eclipse:运行
genEclipseRuns任务。 - IntelliJ IDEA:运行
genIntellijRuns。如果出现“module not specified”错误,请将 ideaModule 属性设为main模块,通常是${project.name}.main。 - Visual Studio Code:运行
genVSCodeRuns。 - 其他 IDE:可直接使用
gradle run*运行配置,如runClient、runServer、runData、runGameTestServer。受支持的 IDE 也可以使用这些任务。
- Eclipse:运行
自定义 Mod 信息
编辑 build.gradle,自定义 Mod 的构建方式,例如文件名和构件版本。除非了解其用途,否则不要编辑 settings.gradle;它指定了 ForgeGradle 所在的仓库。
替换 Mod ID
将所有 examplemod 替换为自己的 Mod ID,包括 mods.toml 和 Mod 主文件。通过设置 base.archivesName 修改构建文件名,通常将其设为 Mod ID:
// 在 build.gradle 中
base.archivesName = 'mymod'
Group ID
group 应设为顶层包名,通常使用自己拥有的域名或电子邮件地址:
| 类型 | 值 | 顶层包 |
|---|---|---|
| 域名 | example.com |
com.example |
| 子域名 | example.github.io |
io.github.example |
| 电子邮件 | example@gmail.com |
com.gmail.example |
group = 'com.example'
Java 源代码目录 src/main/java 下的包也应遵循该结构,以内层包表示 Mod ID:
com
└── example(group 属性指定的顶层包)
└── mymod(Mod ID)
└── MyMod.java(由 ExampleMod.java 重命名)
版本
将 version 设为 Mod 的当前版本。文档推荐使用 Maven 版本编号的一种变体:
version = '1.21.1-1.0.0.0'
更多配置参见 ForgeGradle 文档。
构建和测试 Mod
- 运行
gradlew build。默认会在build/libs输出名为[archivesBaseName]-[version].jar的文件,可将它放入已安装 Forge 的 Minecraft 的mods文件夹或进行分发。 - 在测试环境运行时,可以使用生成的运行配置或相应任务,例如
gradlew runClient。Minecraft 将从运行目录(默认为run)启动,并使用指定的源集。默认 MDK 包含main源集,因此src/main/java中的代码会生效。 - 无论使用运行配置还是
gradlew runServer启动独立服务器,服务器首次都会立即关闭。需要编辑运行目录中的eula.txt以接受 Minecraft EULA。接受后服务器即可加载,并可通过直接连接localhost访问。
始终应在独立服务器环境测试 Mod,包括仅客户端 Mod:它们在服务器上加载时应当不执行任何操作。