升级到1.21.2 1.21 Fabric 长线教程计划
本篇教程的视频
(待发布)
本篇教程的源代码
(待发布)
本篇教程目标
- 学会更改
gradle
的配置,并将项目更新到1.21.2
注意
本篇教程只讲如何更改Gradle
配置,并将项目更新至1.21.2
,并修正表面上
出现的问题
而涉及具体内容的更改,如物品、方块的注册等,我们将在后续的教程中讲解,将附加于已有教程之后
注意!!!
由于1.21.2
改动较多,非常不建议
将项目直接升级为1.21.2
,尤其是已经有相对完整的项目时
不然那叫一个一改一个不吱声
本篇教程将所有代码回滚至数据生成
这那个分支,并在此基础上,再签出一个新分支
进行升级作业
后面更改的内容作为单独教程推出,并不会在一篇教程中讲完
更改Gradle配置
关于升级版本这个事情,我在第一期教程也提到过,我们可以到Fabric
的官网去查询不同版本的信息
Fabric
开发页面:Fabric Develop
其中的Latest Versions
,我们可以选择Minecraft
的版本,查看其依赖、映射、加载器等是否有更新
Loom
中指明了目前最新的Fabric Loom
的版本
build.gradle
这个文件中,我们可以更改的是Fabric Loom
的版本
目前,截至我写这个教程,Fabric Loom
的最新版本是1.11-SNAPSHOT
我们可以将build.gradle中的fabric-loom
的版本号改为1.11-SNAPSHOT
1 | plugins { |
但要注意,1.11-SNAPSHOT
版本要求的最低Gradle版本为8.14
所以,还要确保项目下的gradle/wrapper
中的gradle-wrapper.properties
文件中的distributionUrl
的版本号大于等于8.14
1 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip |
用镜像源的同理
gradle.properties
在这个文件中,我们要修改Minecraft
的版本号,以及Fabric加载器
及其API
的版本号
1 | minecraft_version=1.21.2 |
当然,其实是应该一个小版本一个小版本
这样来升级的,尤其是你真正在开发模组时,有些小版本还是有区别的
不过我们做教程的话,就不考虑这么多了,直接将项目从1.21
升级到1.21.2
模组的版本号也可以改一下
1 | mod_version=0.1-1.21.2 |
重新构建项目
那么我们就来对这个项目重新构建,让它来下载1.21.2
的那些东西
同样的,大概率是要魔法的
出现BUILD SUCCESSFUL
就说明成功了
修复表面上的问题
我们先来修复表面上
已经报错的那些代码,在后面的教程中来修复藏在里面的
或者因为版本回滚
没有出现的问题
这个呢,我们也可以一并打开Fabric的Blog,查看有哪些地方它进行了修改
在IDEA的左侧栏中,我们可以找到问题,通过构建项目来查找问题
这里呢,主要是数据生成的那些问题
ModLootTableProvider
1 | // RegistryWrapper.Impl<Enchantment> impl = this.registryLookup.getWrapperOrThrow(RegistryKeys.ENCHANTMENT); |
getWrapperOrThrow
方法更改为getOrThrow
方法
ModRecipesProvider
配方的生成类改动有点大
首先我们继承了FabricRecipeProvider
之后,还得重写几个方法
1 |
|
getRecipeGenerator
我们重点来看这个方法
首先是写它的返回值
1 | return new RecipeGenerator(wrapperLookup, recipeExporter) { |
实例化RecipeGenerator
,里面重写一个generate
方法
在这个方法中,我们先写一个注册表包装器中的注册表项
1 | RegistryWrapper.Impl<Item> itemLookup = registries.getOrThrow(RegistryKeys.ITEM); |
原有generate
方法中的东西可以搬过来,但也要改
熔炉、高炉
1 | // offerSmelting(exporter, ICE_ETHER_LIST, RecipeCategory.MISC, ModItems.ICE_ETHER, |
9->1, 1->9可逆合成
1 | // offerReversibleCompactingRecipes(exporter, RecipeCategory.MISC, ModItems.ICE_ETHER, |
营火
1 | offerFoodCookingRecipe("campfire_cooking", RecipeSerializer.CAMPFIRE_COOKING, CampfireCookingRecipe::new, |
有序合成、无序合成
1 | // ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, Items.SUGAR, 3) |
表面上要改的东西大概就这些,但是如果你现在去跑数据生成,还是会报错的
那些是物品、方块注册上的问题了,我们在之后的教程中再讲