开发环境配置 1.20 Fabric 长线教程计划
本篇教程的视频
本篇教程的源代码
GitHub地址:TutorialMod-Start-1.20.1
准备工作
那么从本期教程开始,我们正式的开始,这个1.20.1 fabric
模组的开发教程
那么第一期教程的话,和以往一样,我们就来进行开发环境的配置
JDK17
那么我们的Minecraft
的话,它是拿Java
去写的
而我们要进行开发的话,就得装一个JDK
啊
这个JDK
的全称的话就是Java Development Kit
,简称JDK
大家学Java
的时候的话,应该也都是装过这个东西的
不管是8
也好,还是17
也好,还是21
,应该都是装过这个东西的
1.20.1
它这个版本,它应该是拿Java 17
去写的,所以说我们安装的版本的话,应该要装的是这个JDK17
啊
当然你装JDK21其实也没有问题,它这个版本的话,主要你得看那个模板文件里面,它用的那个gradle
的版本
关于它的下载的话,我这里提供Oracle
官网上的Java
下载
链接:Oracle
链接里点进去,再往下翻,就能翻到JDK17
的下载
它分三个端,三个端的不同的安装程序,下载你自己对应系统
这里我们以Windows
为例
那么它还分一些不同的安装方式,有三个东西
其中一个是zip
,这是压缩文件,它是已经完全安装好的Java,你可以下载解压之后,放到你自己的Java目录中
另外两个exe
和msi
,这两个的话都是安装程序,可以自己选择下载安装
安装的话,默认是安装到C盘
的,其实也不用改安装路径,IDEA会默认到C盘找你的Java
当然你也可以选择安装到其他位置,只要你自己找得到就行
不过,在Oracle上下载JDK17
的话,现在是要注册登录
的,所以说你下载的话,得先注册一个Oracle的账户
嫌麻烦的话,你也可以去百度搜索一下,JDK17的下载,有很多其他的网站
IDEA
IDEA
的全称是IntelliJ IDEA
,是JetBrains
公司的一款Java IDE
那么现在我们就用它作为我们模组开发的编辑器,其他编辑器当然也可以,只是我个人建议使用IDEA
,有些操作会方便一点
那么下载这里我提供官方的下载链接
链接:IDEA下载
那么到下载界面,先别捉急下载
,开头的那个IntelliJ IDEA Ultimate
,什么30天免费试用,咱不要
那玩意是专业版
,其实就对模组开发而言,社区版
足矣,我们用不着专业版的一些功能
然后往下翻,找到IntelliJ IDEA Community
,下载社区版
就行,社区版是完全免费的
IDEA的安装默认也在C盘,这个的话,你就改到其他的位置好了,如果你C盘够大,也可以装C盘里
那么,在安装中,会有一个更新path变量
的选项,这个选项的话,勾选了的话,需要重启电脑
才能生效
模组模板文件
那么接下来我们要去生成Fabric
模组的模板文件
这里我们要到它的模板生成器的网站上
链接:生成器
然后我们来看里面的一些设置:
Mod Name
这个是模组的名字,可以按照你的需求填写,比如TutorialMod
。
这个名字在生成的文件中,会变成我们的我们之后常说的modid
。
如果你的模组名字中间有空格,那么生成的文件中会自动把空格替换成-
。
比如说Tutorial Mod
会变成tutorial-mod
注意,modid
一旦生成就不要乱改,否则会导致模组无法正常运行
Package Name
这个是包名,一般是com.你的名字.模组名(上面的modid)
。
我的话就可以写com.besson.tutorial
(最后一个可以不是modid的)
一般就是你的域名倒过来,然后加上模组名
Minecraft Version
显然易见,这个是我们要开发的Minecraft版本,这里我们选择1.20.1
Advanced Options
下面是一些高级选项
Kotlin Programming Language
,如果你会kotlin
,可以勾选
Mojang Mappings
,这个是Mojang
的官方映射,我们不需要这个,
因为我们的模组是基于Fabric的,Fabric
已经提供了yarn
映射。
本教程也是基于Fabric
的yarn
映射,如果你使用Mojang
映射,有些方法名、类名可能会不一样
Data Generation
,这个是生成数据包的,我们后面会用到,要勾选
Split client and common sources
,这个是分离客户端和服务端源码,可选可不选,不过这里我们先不选
我们的模组基本上是在服务端
上运行的,比如方块实体的运算处理,箱子内存了什么东西,都是服务端存储的
而当玩家打开箱子时,才会触发服务端向客户端
发包,告诉客户端箱子内存了什么东西,然后你可以拿出来或者放进去一些东西
不过,像一些渲染
,如方块实体、生物实体、GUI、Screen等和渲染有关系的东西,都是在客户端上运行的
一切准备完成后,我们点击下方的下载按钮即可下载
模板文件。我们会得到一个zip
文件,将它解压到你的工作目录
初始化项目
解压好我们的模板文件之后,我们用IDEA
打开它
Gradle构建
而后,IDEA
会自动进行Gradle
的构建,不过,这个过程往往是模组开发之路上的第一块绊脚石
Gradle
构建所需的资源都在外网,所以,这个构建过程建议全程使用7个木棍
不过Gradle
可以换源,具体的内容自行百度
那么在Gradle
构建期间,我们可以先看看build.gradle
里的JVM
版本
1 | tasks.withType(JavaCompile).configureEach { |
我们可以发现,Gradle
默认的JVM版本是17
项目结构
那么确认了Gradle
使用的是17
之后,我们也得来看看项目结构
里的设置是否正确
项目结构的快捷键是Shift+Alt+Ctrl+S
,也找到设置中的项目结构打开,在项目
界面,找到SDK
,确认一下使用的是JDK17
在后面一个模块
中,也可以设置使用的SDK,这里我们选择17
当然,其实用21
也是没关系的,只要你的项目不出问题,JDK21
也是可以选择的(我选择的是21)
Gradle JVM
虽然说我们看到build.gradle
里,它默认使用的是17
,但是,有时候IDEA
会自己给你选择其他的版本,我们也来检查一下
设置
-> 构建、执行、部署
-> 构建工具
-> Gradle
,检查Gradle JVM
是否为JDK17
同样的,21
如果不出问题,也可以用
IDEA一些小设置
IDEA 2024.3
版本之后,我们就不再需要安装中文语言包
这个插件了,因为这个时候中文已经是IDEA
的内置语言
了
在外观与行为
->系统设置
->语言和区域
,我们可以更改语言设置(当然需要重新启动
)
那么另外的插件
方面,Minecraft Development
可以装一下,像Translation
这样的翻译插件也可以装一个
运行genSources
当终端出现BUILD SUCCESSFUL
字样,说明我们的Gradle
构建已经成功
接下来我们就要进行源代码的获取,也就是带有注释的源文件
(java
后缀),而不是IDEA给我们反编译的文件(class
后缀)
在IDEA右侧栏中,我们找到一个大象的图标,那个是Gradle的图标
在Tasks
-> fabric
找到genSources
,双击运行,等待它运行完成,也是出现BUILD SUCCESSFUL
字样即代表构建成功
那么接下来,我们找一个Minecraft
的文件,就拿模板文件生成中的mixin
示例文件为例,
也就是ExampleMixin
,我们按住CTRL
,再点击MinecraftServer
,就可以跳转到MinecraftServer
文件
不过,在你没有选择源文件之前,你会发现标签页上的class
后缀的,这是IDEA反编译的,
同时在标签页下方还有一行蓝色
的东西,其中一个选项是选择源,点击它,选择我们刚刚运行生成的源文件,
即带source
后缀的jar
文件
选择好之后,我们就得到了java
后缀的源文件,也可以看到冒出来的一堆注释
那么在此之后,你打开绝大多数的Minecraft
文件,都是java
后缀的源文件
一些文件
那么接下来我们来看看一些比较重要的文件
gradle.properties
这个文件是Gradle
的配置文件,里面有一些Gradle的配置。
1 | # Done to increase the memory available to gradle. |
比如说org.gradle.jvmargs=-Xmx1G
,这个是Gradle的最大内存,可以根据自己的电脑配置来调整
1 | # Fabric Properties |
这个是Fabric
的配置,我们可以在这里修改Minecraft版本
、yarn映射版本
、loader版本
当版本有更新时,我们可以在这里修改,然后重新建构项目即可。版本信息可以在这里给出的网站上找到
链接:Fabric
在这个网站上,我们可以看Latest Versions
中对应Minecraft
的版本是否有更新,
如果有的话,就可以将网站上的内容复制到我们的这个文件中,重新建构
以更新项目
1 | # Mod Properties |
这个是模组的配置,我们可以在这里修改模组的版本号
,另外两个是包名
和模组名
(modid),后面两个基本就不去动它
1 | # Dependencies |
这个是Fabric
的API
版本,同样我们可以用上面的那个网站来检查更新
build.gradle
这个是Gradle
的构建文件,里面有一些Gradle的配置
1 | plugins { |
这个是Gradle
的插件,fabric-loom
是Fabric的插件,其版本也可以在上面的网站上找到
1 | ... |
这个是Gradle
的依赖
,我们可以在这里添加一些依赖
也是为我们模组添加的依赖,一般的可以被当作lib
使用的模组的Wiki
中会告诉我们如何添加
后续我们将争对这一部分的进行专门的讲解
LICENSE
这是许可证
文件,也是开源项目所遵循的开源协议文件
我们可以在这里修改许可证的内容。具体的内容你可以自行百度,把他们复制到这个文件中即可
你也可以在GitHub
上生成你的许可证文件
fabric.mod.json
这个是模组的描述文件,里面有一些模组的信息。
1 | { |
id
是模组的ID,就是modid
version
是模组的版本,这个是在gradle.properties
中配置的
name
是模组的名字
description
是模组的描述
authors
是作者,可以有多个
contact
在一些启动器上是会自动读取的,比如HMCL,你打开模组信息时,会展示官方页面和源代码页面的,homepage
的话,假设你的模组有一个专门的网站,那可以写上,
而sources
就是你的源代码仓库的地址
license
是许可证,这个是在LICENSE
文件中配置的
icon
是模组的图标,这个是在assets/<modid>/icon.png
中配置的
下面,我们要为其中的entrypoints
添加一些内容。
1 | ... |
这里多加一个client
,也就是客户端
,因为模组中有一些特殊的代码需要在客户端运行,比如前面说的渲染。
而后我们需要创建TutorialModClient
这个类
TutorialModClient.java
注意你创建的位置,要和上面写的路径一致
,不然找不到
1 | public class TutorialModClient implements ClientModInitializer { |
这个类要实现ClientModInitializer
接口,
然后重写onInitializeClient
方法。
这个方法会在客户端初始化
的时候被调用。
TutorialMod.java
这个是我们的主类文件,它会在我们游戏启动的时候被调用。我们可以在这里添加一些初始化
代码。
1 | public class TutorialMod implements ModInitializer { |
MOD_ID在现在的版本中,已经自动给你拿出来了,以后我们会用到
重新建构
因为我们改了一些文件,所以我们需要重新构建
一下项目
我们可以找到一个大象带一个重新加载的图标,点击它即可进行重构
查看源代码/资源文件
查看源代码,我们可以直接利用IDEA
的随处搜索
,在IDEA界面的右上角,快捷键double Shift
,然后输入我们要查找的类名即可
另外就是最简单粗暴的方法,直接翻外部库
我们找到Gradle: net.minecraft:minecraft-merged-xxx(这一串可能不一样):1.20.1-net.fabricmc.yarn.1_20_1.1.20.1+build.10-v2
在这个里面,我们可以找到Minecraft
的源代码
net
文件夹下存放的一般是Minecraft的源代码,我们可以直接查看
resource
下的assets
和data
文件也是我们可以查看的东西
assets
是资源文件,data
是数据文件
启动!
折腾完以后,我们就可以启动
我们的游戏了。我们可以在IDEA的右上角的运行中,
找到Minecraft Client
运行,也可以找到gradle任务中的runClient
运行
前面一个运行配置没有的话,可以退出重进一下
当游戏可以正常运行的时候,那么恭喜你!你已经完成了第一步!