Minecraft Fabric 模组开发(一)创建项目

本教程将使用到的开发环境与工具:JDK、IntelliJ IDEA
为节省文本,省略了工具等安装教程。

1. 选择合适的JDK

根据开发的Minecraft版本选择合适的JDK。(参考Minecraft Wiki

https://adoptium.net/temurin/releases

  • 请注意,当使用某些与操作系统不匹配的Java版本(32或64位)、使用某些Java 7版本或安装了多个版本的Java玩Minecraft Java版时可能会引发某些用户体验问题。
  • 1.1217w13a)开始,运行Minecraft的最低要求是Java 8。如果玩家不知道他们的电脑是否安装了Java 8,那么安装程序默认会自动安装并使用支持Minecraft运行的Java。
  • 1.1721w19a)开始,运行Minecraft的最低要求是Java 16。
  • 1.181.18-pre2)开始,运行Minecraft的最低要求是Java 17。
  • 1.20.524w14a)开始,运行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更换为其他的netorg等都是可以的。此处的结构其实完全可以自定义。

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的推荐版本(参考文章开头)。

  1. 检查项目JDK

点击File菜单选择Project Structure,查看SDK版本是否正确,若不正确可以在IDEA中重新下载。

  1. 检查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客户端进行调试。

留下评论