跳到主要内容

第二章 环境构建

ℹ️提示

这一环节中的部分信息你应该在之前的编程学习中有所了解。如果你知道如何安装IDEA和JDK,可以跳至环境设置;如果你已经设置过Java环境,可以跳至构建;如果你知道如何构建,可以跳过本章节

这是一个教你怎么写一个对标 Minecraft1.21并使用NeoForge模组加载器的模组的教程。

⚠️警告

本教程只适用于使用NeoForge模组加载器的 Minecraft1.21版本,如果你在写别的版本的模组,参考本教程可能会导致你的代码出错或出现未经验证的问题

ℹ️使用须知

在本教程中,我们只讨论如何用Java写模组,不会讨论有关MCreator这类模组制作器的使用。如果你不会Java,请先学习Java。

准备工作

工欲善其事,必先利其器。

ℹ️提示

下面的步骤涉及很多网络下载内容,你可以同时进行多个步骤的下载和安装工作。

安装IntelliJ IDEA

IDEA是一款强大的代码编辑器,对Java和Kotlin的支持尤为突出。使用IDEA可以减少很多不必要的项目设置工作,不过如果你非要用Eclipse或者VS Code,也不是不行。

IDEA分为专业版社区版,两者功能区别不大,选择任何一种都不会与本教程提供的任意一个步骤冲突。

专业版是收费的,社区版是不收费的。专业版只有一些你一般用不到的高级功能,所以没有IDEA的下社区版就行。

请在这个官方页面下载IDEA,注意社区版(Community Edition)在页面下部,你看到的第一个是专业版(Ultimate)。

示例图片-在JetBrains官网下载社区版IDEA

ℹ️提示

经过我测试,使用Windows7系统的大部分电脑无法启动安装后的2024版IDEA。如果你使用Windows7,请在这里寻找并下载2023.1的IDEA Community版: Other Versions - IntelliJ IDEA

安装的时候,建议修改安装路径到别的存储盘里。建议安装到你新建的一个命名为“IDEA”的文件夹里,这样更方便管理

初次启动IDEA,会弹出用户协议许可和协助软件改进的共享信息许可,新版本会帮助你设置语言。

启动IDEA后,不要急着新建项目(也根本用不到新建),我们还缺少一个关键步骤

安装JDK

我们开发的模组是针对Minecraft1.21的,NeoForge对此提供的Gradle构建要求使用Java21。所以,第一步,安装一个21版本的JDK吧。

JDK分为两种,OpenJDK和OracleJDK,有兴趣的可以在这篇文章进行了解,在此我们推荐使用OpenJDK

Linux

本文作者主要使用Windows10系统,不会对Linux系统进行过多指导。以下下载内容,以及后面的环境变量设置,请自行阅读这篇文章

MacOS

请参考这篇文章

哇是苹果,稀客欸!我虚拟机跑XCode的iOS Simulator太卡了,把你的借我用几天(滑稽)

Windows

OpenJDK

请在这个官方页面下载JDK,选择Java21.0.2,选择Windows,下载zip包即可,注意别选错了

image-20250622204204167

OracleJDK

请在这个官方页面下载JDK,选择Java21,选择Windows,下载exe安装包或msi安装包都可以,但是注意别选错了

示例图片-在Oracle官网下载Java

下载完成后,双击安装包,按照安装向导提示安装(不建议调整任何可调参数,直接Next即可)

下载NeoForge的项目库

为了完成项目的构建并引入Minecraft环境,我们需要下载NeoForge的构建项目库并解压。

目前有两种构建库供开发者选择:ModDevGradleNeoGradle,两者区别不大,它们都是Mod Developer Kit(MDK)

ℹ️提示

本教程使用ModDevGradle

对于如何准备构建,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到本地(我经常这么干)。

稍等一下!你是在开发1.21.x吗?如果是这样,本教程只作为参考!这里给出的链接全都指向1.21而不是1.21.x!如果你要下载1.21.x的MDK包,请在这里选择对应版本和对应构建库下载!不同版本间会有差异

示例图片-Github上的NeoGradle库

ℹ️提示

GitHub在国内的访问并不稳定。如果你遇到网络问题无法访问,是不是应该去找找什么解决方案呢?(咳咳)

ps: 请遵守国家法律规定。

额外的设置

Java环境相关设置

在运行开发环境时,我们经常遇到一些关于编译器版本的小问题。譬如你为了和朋友玩赛文科技整合包而同时安装了JDK8、为了工作使用JDK11,亦或是在之前的学习中使用了JDK23等,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

示例图片-Java21路径

点击“确定”按钮,完成一次设置。

接下来,再次点击“新建”,变量名输入JAVA_HOME,变量值输入%JAVA21_HOME%,注意不要少了百分号

示例图片-Java路径

点击“确定”。

接下来,翻找你的系统变量,找到并双击“Path"这个值,打开环境变量设置,点击环境变量的“新建”,填入%JAVA_HOME%,并点击“确定”完成并退出编辑。

ℹ️提示

使用Windows7的用户并没有设置环境变量的单独窗口,这种情况下双击会弹出普通的系统变量编辑。请不要删除变量值的任何内容!在结尾处添加一个英文分隔符;,并输入%JAVA_HOME%,点击“确认”完成编辑

如果你发现你的Path里面已经有类似配置了,你就不需要进行这步了。

示例图片-在Path添加Java

IDEA语言相关设置

ℹ️提示

如果你在安装IDEA的过程中出现“选择语言”的步骤,并且中文正常,你可以跳过这部分

2024及以前的IDEA的默认语言是英文,不过不用担心,我们可以通过安装中文插件的方法解决这个问题。

运行IDEA,在窗口中按下组合键Ctrl+Alt+S打开设置,在左侧栏目选择“Plugins”,在Marketplace里搜索“Chinese”,安装简体中文语言包。

示例图片-IDEA的插件管理界面

安装完成后,IDEA会提示你重新启动IDEA程序,点击Enter自动重启或手动关闭再开启都可以。

开始构建

导入项目

经过了一段时间的准备,我们已经完成了初步的准备,可以正式开始构建项目了。

正巧,我手头有些计划的模组,就随着写模组一一介绍怎么写吧。

如果你在前文选择了在GitHub上进行克隆,只需要在本地VCS克隆过来。

如果你选择下载zip文件,首先,要把下载好的压缩包整个解压成为一个单独的项目文件夹(我会把解压内容塞到Projects文件夹里):

示例图片-压缩包内容

然后,将这个文件夹名称改成加载器名+游戏版本+我们自己定义的模组名(不要带空格、特殊符号等),并在IDEA中点击“打开项目”,选择我们刚刚解压的文件夹。

ℹ️提示

这一步其实并不重要,但是你应该意识到一个好的命名习惯可以在日后的工作中省去一些不必要的思考。

示例图片-项目文件夹

示例图片-IDEA选择项目文件夹

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

示例图片-进入后的样子

(不要在意那只桌宠,后面你还会经常见到她的)

ℹ️提示

我的IDEA仍然使用旧版UI,因为我不习惯新UI。

如果你的IDEA和我的界面分布有差异不要担心,这是正常现象

构建详解

在进入项目后,你的IDEA就开始自动运行Gradle了,构建会很耗费时间,从15分钟到一两个小时不等,具体视网络环境而论。

构建失败?构建不动?别急,我们先来了解一下Gradle构建系统。

Gradle是什么

Gradle 是一个开源的构建自动化工具,主要用于构建、测试和发布软件项目。它特别适用于多语言项目,并且可以处理复杂的构建需求。相比于其他构建工具,比如 Apache Maven 和 Ant,Gradle 提供了更灵活和强大的构建脚本,因为它使用了基于 Groovy 或 Kotlin 的领域特定语言(DSL)

简而言之,就是这个东西负责管理你的项目中一堆堆的库、一摞摞的运行脚本和其他相关维护。

你可以拖拽打开build.gradle,看一眼Groovy的语法,不过我们并不需要修改它。

设置Java版本

如果你的Gradle构建出师未捷身先死,提示Java版本有问题。请按照下面的方法设置版本

按下Ctrl+Alt+S呼出设置面板,在构建、执行、部署 -> 构建工具 -> Gradle中,选择你的模块,设置SDK

示例图片-设置里的Gradle栏目

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

示例图片-项目设置

还是有问题?回上面Java环境相关设置调理你的环境去!

添加插件

按理说,IDEA会在你导入项目后推荐一个叫做Minecraft Development的插件,如果你没有安装,可能(亦或是必然)引发构建错误。

Minecraft Development是一个专门提供给我的世界社区内容开发者的插件,提供了包括插件开发、模组开发等一系列支持,还内置了文本形态NBT编辑器和Mixin断点调试支持,是开发模组必不可少的强力插件。

image-20250622170500495

打开设置的快捷键上文IDEA语言相关设置有介绍,此处不再赘述、

设置代理

如果你的构建失败,十有八九是网络问题(比如“Can't find id plugin "abc" ”)。这个问题并不好解决,如果你有可用的代理,请按这两步设置代理:

按下Ctrl+Alt+S呼出设置面板,在外观与行为 -> 系统设置 -> HTTP代理中,修改代理选项为“手动配置”,并填入你代理的IP (如192.168.1.3) 到“主机名”,端口 (如11451) 到“端口号”,并点击“确定”。

打开gradle.properties,在第一行前输入这段文字来设定Gradle代理:

[root@localhost=.gradle]
systemProp.http.proxyHost=(你的代理IP)
systemProp.http.proxyPort= (你的代理端口)
systemProp.https.proxyHost= (你的代理IP)
systemProp.https.proxyPort= (你的代理端口)
# 如果你的代理http和https是合并的,两个ip和两个端口是一样的。

这样,你就算完成了代理的设置。如果代理和目标一切正常,大概就不存在网络问题了。

如果你在下载或上传项目的时候被Git提示Connection Reset等杂症,多半也是网络问题,你可以调出Git Bash设置一下http和https的Proxy。相关内容建议自行搜索

一个你可以忽略掉的报错

第一次构建进行到后半段时,可能会突然定位到某个代码段,并在构建提示里表示某些文件的某段代码有问题。

并不重要,因为你还没有开始修改样本模组的基础数据,所以这只是构建在发神经(×)。

只要它没有导致你的构建出现BUILD FAILED的提示并终止,请直接无视它。

如何重新开始

如果你的构建不幸的遭遇了BUILD FAILED,可以点击build栏目中的刷新按钮(和浏览器的刷新按钮很像)重新构建。

如果你找不到那个按钮,可以尝试关闭项目再打开,IDEA会再一次尝试构建。

遇到困难

如果还有其它问题,可以来我管理的Ti works对外开放QQ群:953398884

我平时比较繁忙,很少看消息,请见谅。

测试程序

如果没有什么严重问题,构建完成后,会在结尾显示一个赏心悦目的BUILD SUCCESS字样。如果你的初次构建速度快于10分钟,那你的网络环境真的很不错(((

为了检查一切如我们所预期的那样进行,你需要启动一次部署的MC。

构建完成后,你的运行栏会出现这样四个运行项目:ClientDataServerGameTestServer,如图右上角:

如果没有出现对应启动条目,请尝试一下关闭IDEA再重新运行。

示例图片-运行栏在这里

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

示例图片-弹出游戏界面

创建一个世界试试,没什么问题的话,就可以退出了。

ℹ️提示

可运行的项目是由配置文件完成的,它存在于你的项目下的.idea/workspace.xml中,是由构建自行生成的。

至此,我们就算构建成功了!庆祝一下叭~

章末小记

是不是有些累呢?我写这章花了不少时间呢。我认为写模组这件事,欲速则不达。细细琢磨,或许才能深度理解吧。

关于我的教程“细致过度”的问题,我会进行反思的。不过我认为,讲的细致一点,兴许更能帮到新手。

提醒你一下,让AI代写代码不总是可取的,对于这种偏小众的领域,就连GPT4都会不时地出错。所以,尽己所能,努力探索!

对了,最近在B站上看到一首好听的歌(含BGA):来自Empty old CityAstronomy/天文学,世界观设计也很有意思,在此分享给你!


MakerTechno编辑于2024年11月9日,本文分享至凉拌小鸽的个人博客部署,微调后在B站部署

MakerTechno修改于2025年6月22日,增添了“添加插件”栏目,修改了部分其它内容

MakerTechno修正于2025年6月28日,并添加了标识性头

MakerTechno编辑于2025年8月3日,针对B站评论区提问做出了修正

MakerTechno改写于2025年8月4日,更改了本站教程的协议类型。

Copyright © 2025 MakerTechno. 保留所有权利。

在明确注明原文出处(包括作者名与原始链接)的前提下,允许非商业性地引用本作品片段。引用内容不得超过原文的 20%,不得歪曲原意或用于误导性语境。整篇转载或复制使用需获得作者授权。本网站所有教程不允许商用,也不会授予商用授权。