前言 1.20 Fabric 长线教程计划
本篇视频
Part 1 前系列教程总结
第一个部分来总结一下之前的模组开发教程。
其实呢,在1.21
的模组开发教程中,也做过这样的总结,不过现在我们一起看看之前的那些教程。
从我制作模组开发教程以来,目前有三套模组开发教程,包括1.16.5 Forge
、1.20 Fabric
和1.21 Fabric
。
其实就目前而言,从我的角度来说,也就只有1.21 Fabric
那个教程还算可以,
至少在那一个系列的教程中,我把我要讲的,基本上都讲了。
最开头的那个1.16.5 Forge
的教程本来也就没好好做,因为那个时候我自己的编程能力也就那样;1.20 Fabric
的教程处于一个时间较短,但我自己的事情一堆的寒假,其实也没好好做;
而后1.21 Fabric
的教程折腾了好几个月,连带着图文教程一起给肝完了,
这个系列能说是我唯一一个好好做的系列。
而现在呢,为什么我要重新回过头来重制1.20 Fabric
的教程呢?
这个我在我自己的2024年年度总结
中写过。
一方面,1.21.2
以后的版本,你说它小版本更新吧,啊对,改的跟个大版本更新一样。
有些东西是越来越抽象
了,而就我目前的情况来说,我也暂时不想也没时间去研究那些新东西。
而且现在Minecraft
的更新还是挺频繁的,如果说每出一个新版本,
我就来做一个新系列的教程的话,时间成本那是很大滴。
另外,其实你们能够发现,每个系列讲来讲去其实东西都差不多的,
额,不仅仅是因为我用的例子一样。
就像注册这种,底层不动的话基本上都差不多,各种各样的数据文件也好,也都是差不多的。
我相信大家更愿意听的,不是差别不大的、老生常谈的东西,而是想听更深入的,进阶的东西。
所以与其去追Minecraft
的版本,倒不如在一个版本上专精,一个版本会了,
其实其他的版本,甚至另外两个模组开发端都是一样的。
短期
内的话,高版本
的教程是没有了,不过,我也期待能有人接着做下去,那样我就不用干了,哈哈~
另一个方面呢,我自己就在开发1.20.1 Fabric
的模组,所以对于其他版本而言,1.20.1
肯定更加熟悉。
而且明日方舟的家具模组是一个长线计划,只要方舟有新的家具出来,
就会一路更新下去,所以顺带着我就将1.20.1 Fabric的模组开发教程也作为一个长线计划。
其实这俩玩意是可以互补
的,家具模组的一些东西可以作为教程,
然后在教程中探索到的新点子也可以写到模组中去,双赢对吧。
其实大家有什么新想法也可以交流,可以写出来,也可以做教程,一起来扩充国内的模组开发教程。
我会做教程吗?其实我也不会,只是希望大家或多或少能学点东西吧。
我教给大家的,其实早就已经教了,这个在后面那部分也会讲到,那就是研究源代码
。
古人云,授人以鱼不如授人以渔
大家觉得,你是选择给你一条鱼,还是说我把捕鱼的技术教给你?
从长远来看,大多数人应该会选择后者
,毕竟给你一条鱼,吃完了,然后呢?
显然,模组开发也是一样的,我要做的,是把如何写模组这件事教给大家,而不是简单地告诉你,
这个东西这么写,那个东西这么写,然后就完了。
当然,这种教程并不好做,因为要考虑的东西,要讲的东西要比一般的教程多得多。你也会发现,这种教程的时长也会比一般的教程长得多。
Part 2 模组开发注意事项
这个部分吧,其实就是当时在《小白怎么做模组》
那个视频里讲过的,
差不多。那个视频咋说呢,发了一个礼拜之后莫名其妙的有流量了,于是乎,也为我的教程带来了流量。
时至今日,它还在发挥着引流的作用,那就让它这么待着吧。我这里的话重新总结为四个关键词
。
第一个,Java基础
。还用我说什么吗?
这是一个老生常谈的东西吧,不要问为什么要学Java,你觉得Java版
是叫着好听的吗?
为啥它不叫Python版
?我知道某易的编辑器是用Python
的吧,但那玩意开发的是什么,基岩版吧?
Java版
的模组,就拿Java
写,或者Kotlin
,当然后者不在我们的教程范围内。
其他语言,可以起一个辅助作用,比如Python
来辅助编写一些重复性比较高的语句,或者编一些json
文件。
当你有成百上千
个东西要加在模组里面的时候,你就会知道我为什么要这么干了。
当然,这是后话,未来我们也可以讲讲。
回过头来,我还是得强调,不要不要不要,跳过Java的基础教程来学模组开发
即便你把我的教程抄会了,一到你自己写,那又寄了,这不白搭吗?
所以,一开始,不用想你的想法能不能实现,那都是后话,没基础再天马行空的想法也是空想
没基础的,就此打住,先去学Java。有句话怎么讲的,基础不牢,地动山摇
。
另外,如果说学了其他语言的,其实我也建议学学Java
的基础,我自己是Python
过来的,
这俩差别挺大,而C
或者C++
的话,可能还和Java
像一点,但还是建议了解一下Java
的基础。
第二个,日志
。如果你们来问问题,我基本上都会提这个东西。
因为99%的问题都可以通过日志来解决
,或者崩溃报告。但相对而言,日志更加方便。
以前呢,你自己加模组玩游戏,游戏崩溃了,你不会看,把崩溃报告发出来给别人看看,那没事。
但是现在,你都干开发了,不要说还不会看日志。
因为学编程的时候,总会有报错
的时候吧,你会看报错信息,也就会看日志。
只是日志会分得更加详细,其他的信息也有很多。
一般在开发过程中,尤其要注意WARN
、ERROR
标识的日志信息,那些警告和错误可能会导致你的游戏崩溃。
用IDEA
开发的话,Fabric
的话,那些不同日志标识的颜色
也是不一样的,另外两个好像没这个特性,
还得找找。
即便崩溃了,你也可以根据日志中标识的有问题的位置进行跳转,快速定位你代码的问题。
另外1%
的问题,大多数是IDEA
、Gradle
、Java
等等杂七杂八的问题导致的。
第三个,源代码
。这是我从1.20
教程开始提出的一个核心方法论
,在1.21
的教程中进行了证明。
开发一个模组是要消耗大量时间的,但其实大多数的时间并不是你在写代码
,而是在研究代码
。
你想用Minecraft
的某个物品、方块、效果等等某个部分,去看源代码
;
你觉得某个模组
的某个东西很好,想看看如何实现的,去看它们的源代码
。
是的,源代码不仅仅指MC的源代码
,还有发展了十几年的庞大的开源社区贡献的种类繁多的模组源代码
,
某些闭源的模组也可以通过反编译的手段获得源代码,虽然那样可能不太道德。
当然,在这里我们也要知道,我在这里说的MC的源代码
并不是真正意义上的源代码,
因为MC是闭源
的商业游戏,源代码是它的商业机密
,可不会放出来。
那么我们所能看到的,是各个模组开发组织他们依照一套映射表
,进行反编译
得到的。
映射
是什么东西,这里我就简单解释一下,感兴趣的同学可以自己深入研究,
大佬们也可以在评论区留下你的想法。
我不知道大家有没有拆过MC的jar
包,拆了之后去掉另外的数据文件,你会得到一堆class
文件,
那些是Java
编译好的文件,因为Java
的源文件
是java
后缀的。
然后我们再往里面看看,除了Java
常规的关键字
外,
就是一堆零零散散、甚至可以说是乱七八糟的变量名、方法名
,
而这些乱七八糟的名字,就是通过一套特定的映射表
混淆成的。
然后那些模组开发组织
,人工猜测这些名字的含义,制成他们自己的映射表
,
那些名字通过这些映射表反编译之后,就成为了我们看到的源代码。
Fabric
的yarn
映射,便是其中之一。当然现在Mojang
也公开了一部分映射表,NeoForge
和Forge
就是用的Mojang映射,当然Fabric现在也有了。
即便如此,我们能看到的源代码,也就只有一部分
,翻源代码的时候,
你可能还是会看到flied_xxx
、method_xxx
这样类似的字段,那是没完全反编译过来的名字,
我们还没猜到它的意思。
因为映射表的不同,所以我们会看到那些字段名、类名、方法名是不一样的
。
第四个,静心
。为什么说我不出Java的基础教程,而是直接讲模组开发的东西。
因为我不是专业的
,不是专门学Java的,网上现在Java的教程也很多,学那些就够了。
当然,在学Java的过程中,我更看重你的,是你的耐心
。
编程一事,慢慢来,不要火急火燎的
,我相信你学完Java基础之后,也能静下心来
,耐心地来学模组开发。
现在的人呢,包括我自己,其实不是说学不会,而是没能静下心来好好学
。
当然也有这个时代的原因,因为我们所处的时代发展异常迅速,
刷视频越刷越焦虑
,结果还刷得不亦乐乎,干嘛呢?
放下手机,泡杯茶,慢慢喝,慢慢品,静下心来,慢慢学。
人不能一口气吃成个胖子,胖子也不可能一口气瘦下来,凡事都有一个过程
,对吧?
咱们数学老师往往都会强调,过程!
所以,把心静下来,我把这条放在最后,也看看你能不能看到这里。这一条,也许比前面的三条都要重要。
模组开发其实自由度相当高
,只要你会,就没有写不出来的东西,写不出来也就目前能力不够,仅此而已。
话说,你们觉得我厉害吗?不少人觉得我厉害,其实我能实话告诉你,不厉害
。
咱也就是一个平平无奇的大学生罢了,而且还是建筑学专业的,论专业性肯定比不上计算机专业的。
你要说为什么我能在一些问题上快速响应,直接看出问题所在?其实就是看得多
,量多了,质也就有了。
其实编程,或者说模组开发这件事,看完我的教程是远远不够的,自己也得多看多写,也可以和别人多交流,
甚至你可以自己出教程。而相对而言,我个人感觉,做教程的话进步是最快的。
因为在教会别人之前,你自己得先搞清楚那堆东西,然后才能教别人。
外加一大堆杂七杂八的问题,都连带着推动你进步。费曼学习法
嘛,对吧。
Part 3 教程安排
那么关于教程安排的话,当然是先把我要讲的都讲了,然后再追加新内容
。
和往常一样,我们从基础教程
开始,再往进阶
拓展。
案例方面的话,前面基础部分就延用曾经的案例,毕竟这个是对1.20
教程的重制,
然后内容上做到和1.21
教程差不多一致。
在此之后,我将进一步结合我自己的模组开发历程
和大家的想法,去写一些新东西、新玩意出来。
这个系列的教程的话,大家有什么想法都可以提,我如果有能力实现这些想法的话,
后面都会做成教程放出来。不过也不一定我来做,大家也可以来做。
我建议,去我的频道
。频道其实就像国外的那个Discord
吧,因为在那里你能发帖子,
人多了的话就可以一起交流。
本系列教程是一个长线计划
,我自己也不知道会持续多长时间,一年两年,
到我大学毕业或者一直到我工作可能还会接着做,只要能写得出来,那就出新教程。
当然,更新频率
的话就没有个定数
了,有就出,没有就空着几个月。
在本系列教程之外的教程
,有时间的话可以研究研究,出一点,但终归不是重点。
当然,这样的教程模式,也让我有更多的时间去搞点其他的新东西,
未来可能会做点别的教程呢,哈,谁知道呢。
那么大概要讲的就这些,我们在正式的教程中再见!