本节包含了有关如何建立NeoForge工作空间以及如何运行并测试你的模组的信息

前提条件

  • 熟悉编程语言Java,尤其是其中的面向对象,多态,泛型以及各种功能特性。

  • 安装JDK21以及64位的JVM。 NeoForge官方推荐微软的OpenJDK,但是其他的JDK也一样可以运行。

⚠️注意

请确保你使用的是64位的JVM。一种检查方式是在终端中运行java -version。由于32位的JVM有很多方面都已经失去支持,使用32位的JVM可能会造成一些问题

  • 选择一款你熟悉的集成开发环境(IDE)。

    • NeoForge官方支持IntelliJ IDEAEclipse,二者都集成了对Gradle的支持。但是使用其他像是Visual Studio Code,Vim,Emacs这样的IDE也可以。

  • 熟悉GitGitHub。技术上来讲这并不是必须,但是它可以让你过得更轻松。

建立环境

  • 打开Mod开发工具包(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.gradlesettings.gradle,所有的基础属性可以在gradle.properties中设置

构建并测试你的模组

为了构建你的模组,运行 gradle build。这会在build/libs中输出一个名为<archivesBaseName>-<version>.jar的文件。 <archivesBaseName><version>是由build.gradle设置的属性,并且默认是gradle.properties中的mod_idmod_version的值,如果你想的话,你可以在build.gradle中改掉这个。最终的JAR包可以放进启用NeoForge的Minecraft的mods目录中,或者上传到mod分发平台。

要在测试环境下运行你的模组,你可以使用生成运行配置或者使用相关的任务(例如gradlew runClient)。这将会从对应的启动目录(例如runs/client或者runs/server)中运行启动Minecraft,以及任何指定的源的集合。默认的MDK包含了main源集,所以任何写在src/main/java里面的代码都会应用。

服务器测试

如果你运行了一个专用服务器,无论是通过运行配置还是指令gradlew runServer,服务器都会立即关闭。你需要通过编辑运行目录中的eula.txt来接受Minecraft EULA。

一旦接受,服务器就会加载并在localhost(或者默认是127.0.0.1)下可用。但是你还是无法加入服务器,因为服务器默认开启了正版验证,也就是需要身份验证(开发用的玩家没有这个东西)。为了解决这个问题,你需要再次关掉你的服务器并设置server.properties中的online-mode属性为false。之后打开你的服务器应该就可以加入服务器了。

✅提示

你总是应该在专用服务器的环境下测试你的模组,包括只有客户端的模组,因为在服务端上加载的时候这种模组不应该有任何动作。

原文:

https://docs.neoforged.net/docs/gettingstarted/

一个还在寻找自己的三流开发者