
ℹ️提示
这一环节中的部分信息你应该在之前的编程学习中有所了解。如果你知道如何安装,可以跳至开始构建;如果你知道如何构建,可以跳过本章节。
这是一个教你怎么写一个对标 Minecraft1.21并使用NeoForge模组加载器的模组的教程。本教程同样会在https://blog.exciting-coding.store/ 推出,并可能在将来出现在我的个人博客上,除此之外没有任何授权。另,B站版本教程与原稿(markdown,html)有微小出入(包括视觉上)。
⚠️警告
本教程只适用于使用NeoForge模组加载器的 Minecraft1.21版本,如果你在写别的版本的模组,参考本教程可能会导致你的代码出错或出现未经验证的问题。
ℹ️使用须知
在本教程中,我们只讨论如何用Java写模组,不会讨论有关MCreator这类模组制作器的使用。如果你不会Java,请先学习Java。
工欲善其事,必先利其器。
ℹ️提示
下面的步骤涉及很多网络下载内容,你可以同时完成多个步骤的下载工作。
我们开发的模组是针对Minecraft1.21的,NeoForge对此提供的Gradle构建要求使用Java21。所以,第一步,安装一个21版本的JDK吧。
请在这个官方页面下载JDK,Java21,选择Windows,下载exe安装包或msi安装包都可以,但是注意别选错了。
Java Downloads (JDK21 for Windows) | Oracle :
https://www.oracle.com/java/technologies/downloads/#java21

下载完成后,双击安装包,按照安装向导提示安装(不建议调整任何可调参数,直接Next即可)
IDEA是一款强大的代码编辑器,对Java和Kotlin的支持尤为突出。使用IDEA可以减少很多不必要的项目设置工作,不过如果你非要用Eclipse或者VS Code,也不是不行。
IDEA分为专业版和社区版,两者功能区别不大,选择任何一种都不会与本教程提供的任意一个步骤冲突。
专业版是收费的,社区版是不收费的。
请在这个官方页面下载IDEA,注意社区版在页面下部,你看到的第一个是专业版。
Download IntelliJ IDEA – The Leading Java and Kotlin IDE :
https://www.jetbrains.com/idea/download/?section=windows

ℹ️提示
经过我测试,使用Windows7系统的大部分电脑无法启动安装后的2024版IDEA。如果你使用Windows7,请在这里寻找并下载2023.1的IDEA Community版: Other Versions - IntelliJ IDEA
安装的时候,建议修改安装路径到别的存储盘里。建议安装到你新建的一个命名为“IDEA”的文件夹里,这样更方便管理。
初次启动IDEA,会弹出用户协议许可和协助软件改进的共享信息许可。
启动IDEA后,不要急着新建项目,我们还缺少一个关键步骤。
为了完成项目的构建并引入Minecraft环境,我们需要下载NeoForge的构建项目库并解压。
目前有两种构建库供开发者选择:ModDevGradle和NeoGradle,两者区别不大,它们都是Mod Developer Kit(MDK)。
对于如何准备构建,NeoForge的文档是如此解释的:
Open the Mod Developer Kit (MDK) (either ModDevGradle or NeoGradle) GitHub repository, click "Use this template" and clone the newly-created repository to your local machine.
If you do not want to use GitHub, or if you want to get the template for an older commit, you can also download the ZIP of the repository (under Code -> Download ZIP) and extract it.
也就是说,你可以直接在GitHub上创建一个以MDK为模板的项目,再通过IDEA克隆到本地。这会导致你的项目上出现”使用xxx为模板“的标识。当然你也可以选择不使用GitHub的模板项目,直接点击Code按钮然后下载zip到本地(我经常这么干)。
ModDevGradle: https://github.com/NeoForgeMDKs/MDK-1.21-ModDevGradle
NeoGradle: https://github.com/NeoForgeMDKs/MDK-1.21-NeoGradle

ℹ️提示
GitHub在国内的访问并不稳定。如果你遇到网络问题无法访问,是不是应该去找找什么解决方案呢?(咳咳)
ps: 请遵守国家法律规定。
在运行开发环境时,我们经常遇到一些关于编译器版本的小问题。譬如你为了和朋友玩赛文科技整合包而同时安装了JDK8、为了工作使用JDK11,亦或是在之前的学习中使用了JDK22等,IDEA和PCL2自然会帮你选择合适的Java版本。但是,我们的Gradle和cmd就没这么聪明。因此,设置环境变量成为了一个必不可少的工作。
你可以通过按下Win+R打开运行,输入这段文字后按住Ctrl+Shift(以管理员权限打开)并回车,允许管理员权限的提示后,打开环境变量设置窗口:
rundll32 sysdm.cpl,EditEnvironmentVariables
这其实等效于:右键此电脑->点击属性->点击侧边“高级系统设置”->(权限认证)->点击“环境变量”
你会看到两个栏目,请在系统变量栏目里进行操作。
ℹ️提示
如果你发现“环境变量”的新建等按钮无法点击,说明你未赋予管理员授权或权限不够。这种情况下请按照“等效于”中的步骤操作,或联系设备管理员。
点击“新建”按钮,在弹出的框中的”变量名“处输入JAVA21_HOME,在变量值输入你安装JDK的文件夹位置,如果你没改过,一般可以在C:\Program Files\Java的地方找到它。我的变量值是C:\Program Files\Java\jdk-21。

点击“确定”按钮,完成一次设置。
接下来,再次点击“新建”,变量名输入JAVA_HOME,变量值输入%JAVA21_HOME%,注意不要少了百分号。

点击“确定”。
接下来,翻找你的系统变量,找到并双击“Path"这个值,打开环境变量设置,点击环境变量的“新建”,填入%JAVA_HOME%,并点击“确定”完成并退出编辑。
ℹ️提示
使用Windows7的用户并没有设置环境变量的单独窗口,这种情况下双击会弹出普通的系统变量编辑。请不要删除变量值的任何内容!在结尾处添加一个英文分隔符“;”,并输入%JAVA_HOME%,点击“确认”完成编辑
如果你发现你的Path里面已经有类似配置了,你就不需要进行这步了。

IDEA的默认语言是英文,不过不用担心,我们可以通过安装中文插件的方法解决这个问题。
运行IDEA,在窗口中按下组合键Ctrl+Alt+S打开设置,在左侧栏目选择“Plugins”,在Marketplace里搜索“Chinese”,安装简体中文语言包。

安装完成后,IDEA会提示你重新启动IDEA程序,点击Enter自动重启或手动关闭再开启都可以。
经过了一段时间的准备,我们已经完成了初步的准备,可以正式开始构建项目了。
正巧,我手头有些计划的模组,就随着写模组一一介绍怎么写吧。
如果你选择在GitHub上进行克隆,只需要在本地VCS克隆过来。
首先,把下载好的MDK压缩包整个解压到项目文件夹里:

然后,将大文件夹名称改成加载器名+游戏版本+我们自己定义的模组名(不要带空格、特殊符号等),并在IDEA中点击“打开项目”,选择我们刚刚解压的文件夹。
ℹ️提示
这一步其实并不重要,但是你应该意识到一个好的命名习惯可以在日后的工作中省去一些不必要的思考。


然后,我们就成功进入项目了。

(不要在意那只桌宠,后面你还会经常见到她的)
ℹ️提示
我的IDEA仍然使用旧版UI,因为我不习惯新UI。
如果你的IDEA和我的界面分布有差异,不要担心,这是正常现象。
在进入项目后,你的IDEA就开始自动运行Gradle了,构建会很耗费时间,从15分钟到一两个小时不等,具体视网络环境而论。
构建失败?构建不动?别急,我们先来了解一下Gradle构建系统。
Gradle是什么
Gradle 是一个开源的构建自动化工具,主要用于构建、测试和发布软件项目。它特别适用于多语言项目,并且可以处理复杂的构建需求。相比于其他构建工具,比如 Apache Maven 和 Ant,Gradle 提供了更灵活和强大的构建脚本,因为它使用了基于 Groovy 或 Kotlin 的领域特定语言(DSL)
简而言之,就是这个东西负责管理你的项目中一堆堆的库、一摞摞的运行脚本和其他相关维护。
你可以拖拽打开build.gradle,看一眼Groovy的语法,不过我们并不需要修改它。
如果你的Gradle构建出师未捷身先死,提示Java版本有问题。请按照下面的方法设置版本:
按下Ctrl+Alt+S呼出设置面板,在构建、执行、部署 -> 构建工具 -> Gradle中,选择你的模块,设置SDK。

点击“确定”完成一次设置。接下来,按下Ctrl+Shift+Alt+S,呼出项目属性面板,在“项目”中选择SDK版本,并点击确定,完成JDK版本的设置。

如果你的构建失败,十有八九是网络问题(比如“Can't find id plugin "abc" ”)。这个问题并不好解决,如果你有可用的代理,请按这两步设置代理:
按下Ctrl+Alt+S呼出设置面板,在外观与行为 -> 系统设置 -> HTTP代理中,修改代理选项为“手动配置”,并填入你代理的IP (如192.168.1.3) 到“主机名”,端口 (如25565) 到“端口号”,并点击“确定”。
打开gradle.properties,在第一行前输入这段文字:
-------------------------------------------------------
[root@localhost=.gradle]
systemProp.http.proxyHost=(你的IP)
systemProp.http.proxyPort= (你的端口)
systemProp.https.proxyHost= (你的IP)
systemProp.https.proxyPort= (你的端口)
# 两个ip和两个端口是一样的,除非你的代理http和https是分开的。
--------------------------------------------------------
这样,你就算完成了代理的设置。如果代理和目标一切正常,大概就不存在网络问题了。
第一次构建进行到后半段时,可能会突然定位到某个代码段,并在构建提示里表示某些文件的某段代码有问题。
这并不重要,因为你还没有开始修改样本模组的基础数据,所以这只能是构建在咋咋呼呼。
只要它没有导致你的构建出现BUILD FAILED的提示,请直接无视它。
如果你的构建不幸的遭遇了BUILD FAILED,可以点击build栏目中的刷新按钮(和浏览器的刷新按钮很像)重新构建。
如果你找不到那个按钮,可以尝试关闭项目再打开,IDEA会再一次尝试构建。
如果还有其它问题,见评论区。
我还在上学,很少看消息,请见谅。
如果没有什么严重问题,构建完成后,会在结尾显示一个赏心悦目的BUILD SUCCESS字样。如果你的初次构建速度快于10分钟,那你的网络环境真的很不错(((
为了检查一切如我们所预期的那样进行,你需要启动一次部署的MC。
构建完成后,你的运行栏会出现这样四个运行项目:Client,Data,Server和GameTestServer,如图右上角:

选择Client,然后点击运行。一段时间后,随着log出来的就是Minecraft的界面了:

创建一个世界试试,没什么问题的话,就可以退出了。
ℹ️提示
可运行的项目是由配置文件完成的,它存在于你的项目下的.idea/workspace.xml中,是由构建自行生成的。
至此,我们就算构建成功了!庆祝一下叭~
是不是有些累呢?我写这章花了不少时间呢。我认为写模组这件事,欲速则不达。细细琢磨,或许才能深度理解吧。
关于我的教程“细致过度”的问题,我会进行反思的。不过我认为,讲的细致一点,兴许更能帮到新手。
提醒你一下,让AI代写代码不总是可取的,对于这种偏小众的领域,就连GPT4都会不时地出错。所以,尽己所能,努力探索!
对了,最近在B站上听到一首好听的歌:来自Empty old City的Astronomy/天文学,故事设计也令人很感触,在此分享给你!
MakerTechno编辑于2024年11月9日,随后带着一些高兴与疲惫扑上了象征着温暖与避风港的床。