开始
开始使用 NeoForge
本节包含有关如何设置 NeoForge 工作区以及如何运行和测试你的模组的信息。
先决条件
熟悉 Java 编程语言,特别是其面向对象、多态、泛型和函数式特性。
安装 Java 21 开发工具包(JDK)和 64 位 Java 虚拟机(JVM) 。NeoForge 推荐并正式支持 Microsoft 构建的 OpenJDK,但其他 JDK 也应该可以正常工作。
注意:确保你使用的是 64 位 JVM。一种检查方法是在终端中运行
java -version
。使用 32 位 JVM 时可能会出现一些问题,因为 32 位 JVM 对许多东西的支持已经停止。熟悉你选择的集成开发环境(IDE) 。NeoForge 官方支持 IntelliJ IDEA 和 Eclipse,两者都集成了 Gradle 支持。然而,可以使用任何 IDE,从 Netbeans 或 Visual Studio Code 到 Vim 或 Emacs。
熟悉 Git 和 GitHub。这技术上不是必需的,但它会让你的生活更轻松。
设置工作区
打开 Mod Developer Kit (MDK) (无论是 ModDevGradle 还是 NeoGradle)GitHub 仓库,点击“Use this template”并将新创建的仓库克隆到你的本地机器上。
如果你不想使用 GitHub,或者如果你想获取旧提交的模板,你也可以下载仓库的 ZIP 文件(在 Code -> Download ZIP 下)并解压。
打开你的 IDE 并导入 Gradle 项目。Eclipse 和 IntelliJ IDEA 会自动为你完成此操作。如果你的 IDE 不支持自动导入,你也可以通过
gradlew
终端命令完成。第一次执行此操作时,Gradle 将下载 NeoForge 的所有依赖项,包括 Minecraft 本身,并对它们进行反编译。这可能需要相当长的时间(根据你的硬件和网络强度,最长可达一小时)。
每当你对 Gradle 文件进行更改时,都需要重新加载 Gradle 更改,可以通过 IDE 中的“Reload Gradle”按钮,或者再次通过
gradlew
终端命令完成。
自定义你的模组信息
你模组的许多基本属性可以在gradle.properties
文件中更改。这包括模组名称或模组版本等基本内容。有关更多信息,请参阅gradle.properties
文件中的注释,或参阅gradle.properties
文件的文档。
如果你想进一步修改构建过程,可以编辑build.gradle
文件。NeoGradle(NeoForge 的 Gradle 插件)提供了多个配置选项,其中一些在build.gradle
文件中的注释中进行了解释。完整文档请参阅 NeoGradle 文档。
注意:只有在你知道自己在做什么的情况下才编辑build.gradle
和settings.gradle
文件。所有基本属性都可以通过gradle.properties
设置。
构建和测试你的模组
要构建你的模组,请运行gradlew build
。这将在build/libs
中输出一个名为<archivesBaseName>-<version>.jar
的文件。<archivesBaseName>
和<version>
是由build.gradle
设置的属性,默认分别为gradle.properties
文件中的mod_id
和mod_version
值;如果需要,可以在build.gradle
中更改。生成的 JAR 文件可以放置在支持 NeoForge 的 Minecraft 设置的mods
文件夹中,或上传到模组分发平台。
要在测试环境中运行你的模组,你可以使用生成的运行配置或使用相关的任务(例如gradlew runClient
)。这将从相应的runs
目录(例如runs/client
或runs/server
)启动 Minecraft,并应用指定的任何源集。默认的 MDK 包括主源集,因此在src/main/java
中编写的任何代码都将被应用。
服务器测试
如果你正在运行专用服务器(无论是通过运行配置还是gradlew runServer
),服务器将立即关闭。你需要通过编辑运行目录中的eula.txt
文件来接受 Minecraft EULA。
一旦接受,服务器将加载并可在localhost
(或默认的127.0.0.1
)下使用。然而,你仍然无法加入,因为服务器默认会进入在线模式,这需要身份验证(而开发玩家没有)。要解决此问题,请再次停止服务器并将server.properties
文件中的online-mode
属性设置为false
。现在,启动你的服务器,你应该能够连接。
提示:你应该始终在专用服务器环境中测试你的模组。这包括仅客户端的模组,因为这些模组在服务器上加载时不应执行任何操作。