开发环境配置 1.21 Fabric
观前提示
本教程适用于Minecraft 1.21 Fabric
的模组开发,不是Java教程。在开始之前也请先学习Java,具有一定的Java基础后再来学习
由于1.21的底层代码改了很多,这里并不建议按照此教程编写较低版本,请结合实际情况
如果有问题,请加QQ群(也不要来直接找我)。B站私信不回,谢谢
更多内容请参考以下视频(序言):
本篇教程的视频:
本篇教程源代码
GitHub地址:TutorialMod-Template-1.21
准备工作
安装JDK21
由于Minecraft从1.20.5开始就采用了Java21
来编写,所以说我们开发1.21的模组自然要采用Java21。这里提供的是Oracle JDK21的下载地址,你也可以选择其他JDK21的版本
安装的路径一般不用改,除非你C盘真的塞不下了,再改到其他地方去
JDK下载安装地址:JDK21
环境变量配置
安装好JDK21后,我们需要配置环境变量。其实不配置也可以,但是需要你在IDEA中配置
我们先找到系统变量,Win11的位置在:设置
-> 系统
-> 系统信息
-> 高级系统设置
-> 环境变量
然后在系统变量中新建一个JAVA_HOME
变量,变量值为你的JDK21的安装路径,如C:\Program Files\Java\jdk-21
然后再新建一个CLASSPATH
变量,变量值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
这样就配置好了JDK21的环境变量
安装IDEA
IDEA是一个非常好用的IDE,分专业版
和社区版
,这里我们就选择社区版就好,反正是免费的
IDEA的安装也很简单,直接下载安装包,然后一路下一步就可以了。安装过程中有一步是选择添加"bin"文件夹到PATH
,这个选项可以勾选,但需要重启
才会生效
IDEA下载链接:IDEA
Fabric 开发模板文件生成
Fabric提供了一个模板文件生成器,可以帮助我们快速生成一个Fabric模组的模板文件
然后我们来看里面的一些设置:
Mod Name
这个是模组的名字,可以按照你的需求填写,比如TutorialMod
。这个名字在生成的文件中,会变成我们的我们之后常说的modid
。如果你的模组名字中间有空格,那么生成的文件中会自动把空格替换成-
。比如说Tutorial Mod
会变成tutorial-mod
注意,modid
一旦生成就不要乱改,否则会导致模组无法正常运行
Package Name
这个是包名,一般是com.你的名字.模组名
。比如说com.besson.tutorialmod
。一般就是你的域名倒过来,然后加上模组名
Minecraft Version
显然易见,这个是我们要开发的Minecraft版本,这里我们选择1.21
Advanced Options
勾选
Data Generation,这个是生成数据包的,我们后面会用到。
不勾选
Split client and common sources,这个是分离客户端和服务端源码,我们不需要这个,因为我们的模组基本上是在服务端上运行的(假设你开了个服务器加了这个模组),模组内的运算都是在服务器上完成,再发回客户端的
另外的两个,其中一个是Kotlin Programming Language,如果你会kotlin,可以勾选,但我不能保证此系列教程是否适用。
另一个是Mojang Mappings,这个是Mojang的官方映射,我们不需要这个,因为我们的模组是基于Fabric的,Fabric已经提供了yarn映射。本教程也是基于Fabric的yarn映射,如果你使用Mojang映射,有些方法名、类名可能会不一样,请自行斟酌
一切准备完成后,我们点击下方的下载按钮即可下载模板文件。并将它解压到你的工作目录
初始化项目
接下来,我们用IDEA打开我们的项目。然后它将自动进行Gradle建构。
此过程强烈建议使用加速器
,不然很容易超时导致建构失败。当然,你可以将gradle的下载源改为腾讯的镜像源,至于方法就自行百度了
一些小设置
在等待Gradle建构的时候,我们可以先进行一些小设置
IDEA默认是英文的,我们可以安装一个中文插件,这样IDEA的界面就会变成中文的了。方法:File
-> Settings
-> Plugins
-> 搜索Chinese (Simplified) Language Pack / 中文语言包
-> 安装
不过现在新版本已经内置了中文语言包,可以不用安装这个中文插件了
AI辅助编程的插件也可以安装一下,这样可以更快地编写代码。方法:File
-> Settings
-> Plugins
-> 搜索Copilot
或者CodeGeeX
-> 安装。前者是GitHub的AI插件,后者是清华的,如果你购买了Copilot,那么就安装Copilot
翻译插件也可以安装一下,这样可以翻译一些英文的文档。方法:File
-> Settings
-> Plugins
-> 搜索Translation
-> 安装
其他的主题、字体等设置可以自行调整。这里就不再赘述
检查
当Gradle建构完成后,我们可以检查一下文件是否有问题。看看是否有报错的地方,一般是不会有的
检查项目结构:文件
-> 项目结构
,快捷键Ctrl+Alt+Shift+S
,检查项目设置的项目中的SDK,是否为JDK21
检查Gradle JVM:文件
-> 设置
-> 构建、执行、部署
-> 构建工具
-> Gradle
,检查Gradle JVM是否为JDK21
确保以上两个地方都是JDK21,那一般就不会出问题。
如果运行时出现不支持发行版本21
这类问题,基本上是上面两个出问题了,或者JDK21出问题了。
运行genSource
这个是Gradle的一个task,我们可以在IDEA的右侧找到Gradle
,然后找到Tasks
-> fabric
-> genSource
,然后双击运行即可。这个用于获取源代码的,方便我们查看源代码
其他文件
我们来看一下项目中的一些比较重要的文件:
gradle.properties
这个文件是Gradle的配置文件,里面有一些Gradle的配置。
1 | # Done to increase the memory available to gradle. |
比如说org.gradle.jvmargs=-Xmx1G
,这个是Gradle的最大内存,可以根据自己的电脑配置来调整。
而org.gradle.parallel=true
是并行编译,这个可以加快编译速度。
1 | # Fabric Properties |
这个是Fabric的配置,我们可以在这里修改Minecraft版本、yarn映射版本、loader版本。
当版本有更新时,我们可以在这里修改,然后重新建构项目即可。版本信息可以在这里给出的网站上找到。
1 | # Mod Properties |
这个是模组的配置,我们可以在这里修改模组的版本、包名、模组名。
1 | # Dependencies |
这个是Fabric的API版本,同样我们可以用上面的那个网站来检查更新。
build.gradle
这个是Gradle的构建文件,里面有一些Gradle的配置。
1 | plugins { |
这个是Gradle的插件,我们可以在这里添加一些插件。而fabric-loom
是Fabric的插件,其版本也可以在上面的网站上找到。
1 | ...... |
这个是Gradle的依赖,我们可以在这里添加一些依赖。也是为我们模组添加的依赖,一般的可以被当作lib使用的模组的Wiki中会告诉我们如何添加。后续我们也可以举一些例子。
LICENSE
这是许可证文件,也是开源项目所遵循的开源协议文件。我们可以在这里修改许可证的内容。具体的内容你可以自行百度,把他们复制到这个文件中即可。
fabric.mod.json
路径是src/main/resources/fabric.mod.json
,这个是模组的描述文件,里面有一些模组的信息。
1 | { |
id
是模组的ID,就是modid
version
是模组的版本,这个是在gradle.properties
中配置的
name
是模组的名字
description
是模组的描述
authors
是作者,可以有多个
contact
是联系方式,一般是GitHub地址,当然这里还有一个homepage
(这里被我删掉了),假设你的模组有一个专门的网站,那可以写上
license
是许可证,这个是在LICENSE
文件中配置的
icon
是模组的图标,这个是在assets/tutorialmod/icon.png
中配置的
environment
是环境,一般是*
,表示所有环境。
下面,我们要为其中的entrypoints
添加一些内容。
1 | ...... |
这里多加一个client
,也就是客户端,因为模组中有一些特殊的代码需要在客户端运行,比如渲染。
而后我们需要创建TutorialModClient这个类
TutorialModClient.java
路径是src/main/java/com/besson/tutorialmod/TutorialModClient.java
1 | public class TutorialModClient implements ClientModInitializer { |
这个类要实现ClientModInitializer
接口,然后重写onInitializeClient
方法。这个方法会在客户端初始化的时候被调用。
TutorialMod.java
路径是src/main/java/com/besson/tutorialmod/TutorialMod.java
,这个是我们的主类文件,它会在我们游戏启动的时候被调用。我们可以在这里添加一些初始化代码。
1 | public class TutorialMod implements ModInitializer { |
那么同样的,我还是习惯性的把MODID给单独提出来,这样在后续的代码中,我们可以直接使用TutorialMod.MOD_ID
来获取MODID。而MODID也是我们之后用的比较多的字段。
重新建构
因为我们改了一些文件,所以我们需要重新建构一下项目。我们可以找到一个大象带一个重新加载的图标,点击它即可进行重构。
查看源代码/资源文件
查看源代码,我们可以直接利用IDEA的随处搜索,在IDEA界面的右上角,快捷键double Shift
,然后输入我们要查找的类名即可。
一些Minecraft的类我们可以按住Ctrl
,然后点击类名,就可以直接跳转到Minecraft的源代码中。注意,也许你打开的时候,这个文件的后缀名是.class,我们可以点击选择源
,将我们的源代码文件夹选择为一个带source
的,一般就是在蹦出来的窗口中,前提是运行了genSource
另外就是最简单粗暴的方法,直接翻外部库
。我们找到Gradle: net.minecraft:minecraft-merged-4eb0fe4bb6:1.21-net.fabricmc.yarn.1_21.1.21+build.1-v2
。在这个里面,我们可以找到Minecraft的源代码。net
文件夹下存放的一般是Minecraft的源代码,我们可以直接查看
resource
下的assets
和data
文件也是我们可以查看的东西。assets
是资源文件,data
是数据文件。
启动!
折腾完以后,我们就可以启动我们的游戏了。我们可以在IDEA的右上角的运行中,找到Minecraft Client
运行,也可以找到gradle任务中的runClient
运行。
当游戏可以正常运行的时候,那么恭喜你!你已经完成了第一步!
常见问题F&Q
- Gradle下载慢怎么办?
- 可以使用加速器,或者将gradle的下载源改为腾讯、阿里云、清华的镜像源。
- Gradle建构超时
- 挂加速器,或者改为腾讯、阿里云、清华的镜像源。
- Gradle建构失败
- 删除
.gradle
文件夹,然后重新建构(IDEA抽风的时候可以试试,一般是索引编制出问题了)。 - 也可以删除C盘的
.gradle
文件夹,然后重新建构(不过你得重新下载所有gradle文件)。
- 不支持发行版本21
- 检查JDK21是否配置正确
- 结合上面的检查,检查项目结构和Gradle JVM
- 出现
net.minecraft.util.InvalidIdentifierException: Non [a-z0-9_.-] ...
- 只限定在本篇教程中的话,那么一般就是你改动了某些东西,比如说
modid
,注意modid
和其他文件夹不能有大写字母,更不能有中文!
- 能不能用其他的IDE
- 当然可以,只要你用得习惯,编译器都是一样的。
- 能不能用Python写?
- 不能!不能!不能!
- 这也是我遇到过的最离谱的问题。能问出这个问题的,我只能说你是个人才。