本教程将使用到的开发环境与工具:JDK、IntelliJ IDEA
为节省文本,省略了工具等安装教程。
1. 选择合适的JDK
根据开发的Minecraft版本选择合适的JDK。(参考Minecraft Wiki)
https://adoptium.net/temurin/releases
- 请注意,当使用某些与操作系统不匹配的Java版本(32或64位)、使用某些Java 7版本或安装了多个版本的Java玩Minecraft Java版时可能会引发某些用户体验问题。
- 从1.12(17w13a)开始,运行Minecraft的最低要求是Java 8。如果玩家不知道他们的电脑是否安装了Java 8,那么安装程序默认会自动安装并使用支持Minecraft运行的Java。
- 从1.17(21w19a)开始,运行Minecraft的最低要求是Java 16。
- 从1.18(1.18-pre2)开始,运行Minecraft的最低要求是Java 17。
- 从1.20.5(24w14a)开始,运行Minecraft的最低要求是Java 21,且操作系统要求为64位。
2. 下载Fabric Mod模板
进入Fabric官网的模板生成地址:https://fabricmc.net/develop/template/。根据自己的需要进行以下设置:
Mod Name(模组名称)
此处会根据模组名称自动生成Mod ID。如图这里的Mod ID生成为了iottor
,如果想自定义可以点击Use custom id
。
Package Name(包名)
Java项目一般都会有一个包名,使用.
进行分级,包名的结构一般为com.作者名称.项目名称
或者将com
更换为其他的net
、org
等都是可以的。此处的结构其实完全可以自定义。
Minecraft Version(游戏版本)
选择本模组支持的Minecraft版本。
Advanced Options(高级选项)
这里我们只勾选Data Generation
即可。其他选项具体作用如下:
Kotlin Programming Language
- 作用:Kotlin是一种现代的编程语言,可以用来开发Fabric mod。使用Fabric Kotlin语言适配器可以支持用Kotlin编写Fabric mod。
- 优势:Kotlin提供了一些比Java更现代和简洁的语法特性,如更好的空安全性、扩展函数、协程等,这些都可以提高开发效率和代码可读性。
Mojang Mappings
- 作用:Mojang的官方映射(Mappings)用于替代Yarn映射。映射是指将Minecraft内部代码中的混淆名称(如a、b、c等)映射成有意义的名称(如player、block等),便于开发者理解和使用。
- 注意事项:Mojang的映射的许可证比Yarn的更严格,使用时需要遵守其许可协议,可能会对你的项目产生一些限制。
Data Generation
- 作用:配置Fabric数据生成API,这个API允许你在构建时从代码生成资源,如配方(recipes)等。
- 优势:自动生成资源可以减少手动编写配置文件的工作量,确保代码和资源的一致性,并简化了资源的更新和维护。
Split client and common sources
- 作用:将客户端和服务器端代码分开,以避免在服务器上调用客户端代码而导致的崩溃。这种配置会将你的mod分成两个源码集:client和main。
- 优势:强制客户端和服务器端代码的分离可以减少服务器崩溃的风险,并提高代码的可维护性和稳定性。
配置好我们的选项后即可将这个Template目标下载下来。
3. 初始化项目
将下载下来的压缩文件解压,并使用IDEA打开。接着它会自动进行gradle项目构建。
错误处理
在构建的过程中可能会有失败的情况,这里我将我本人所遇到的一些问题的解决方法放到这里。
报错:Minecraft 1.21 requires Java 21 but Gradle is using 17
如果构建的过程中出现这个错误,我们就需要检查项目的JDK版本是否符合Minecraft的推荐版本(参考文章开头)。
- 检查项目JDK
点击File
菜单选择Project Structure
,查看SDK
版本是否正确,若不正确可以在IDEA中重新下载。
- 检查Gradle的JVM
点击主菜单下的Settings
,搜索”Gradle”查看其JVM版本是否正确。
如果上述内容都修改正确后,将IDEA重启即可。
生成资源
打开终端,执行以下命令,生成模组开发所需数据。这里可能会因为网络问题下载失败,可以尝试添加代理解决。
./gradlew genSources
配置Client
在Mod目录下创建一个Client类,命名为[Mod名]Client
,这里就拿我自己的Mod名称IoTtorClient
举例,并实现ClientModInitializer
接口。
打开fabric.mod.json
文件,找到entrypoints,添加一个client数组,这个参数里边的内容就是我们刚刚创建的IoTtorClient
的全限定类名。
"client": [
"你的包名.Mod名Client"
]
运行Minecraft客户端
在右边的Gradle工具中找到Tasks->fabric->runClient,双击运行。即可运行Minecraft客户端进行调试。