没有API文档,
即使有人把文档摆在你面前,
也不要信。
没有文档、没有文档、没有文档。我重复了很多次了。
严谨一些来说,就1.12.2 forge而言,多数类的API没有文档予以阐释。
当然,如果你用的是网易的python MDK,或者高版本的数据包,那些可以有文档,没问题。
1.12.2forge引入的类,那个也可以有文档,没有问题。
但是多数情况下,你需要跟mc自己的类打交道,那个是真的不存在可信文档。
为什么?
思考一下forge的历史和本质就明白了了。
Minecraft发布后,反编译得到过的代码是经过了混淆的。混淆之后,接口的名字就像是 a aa aab这样,完全不可读。然而,社区一部分人,人力解读这些天书,强行给他们起了新的名字,比如getEntityEquipmentSlot。除此之外,为了让不同的mod加东西时不至于冲突,forge还写了一些中间层的代码。这些中间层代码确实有一定程度的文档。
既然你知道这些东西是人力解读的,那它不可避免地就有风险。显然,forge不能保证自己解读正确,比如1.12.2里实体类的isNonBoss接口,在1.16里,经由官方公布正确答案,它就变成了完全不同的名字:canEntityTravelBetweenWorld什么的,具体拼写我不记得了。
如果你看它的1.12.2名字,你可能会觉得它用于表示是否为boss,然后越走越偏,最终得出钓鱼钩是boss的结论。如果forge真的写了文档,那也势必是在这种错误基础上把人带跑。
forge还有一些东西未做解读,比如,世界生成代码里大量的局部变量,看着就让人头皮发麻。这些东西自然也不会有文档。
事实上,商业游戏在写代码的时候,未必会有配套的文档。往往版本催得很紧,写代码本身都来不及了,哪还有时间写配套文档。如果Minecraft开发者自己都没有文档,你指望forge的人给你写一个出来吗?更不靠谱。
那么为什么总有人求api文档?
因为很多程序员习惯于使用既有的游戏开发引擎,比如Unity3d。这种东西,它的目标一开始就是让人能用,所以会生产出配套的可靠文档。这种情况下,参阅文档就是正确的开发方式。
如果一个人之前习惯和这种东西打交道,那么他过去带来的经验就会促使他去寻求文档。
Minecraft这种商业游戏,一开始就没打算让第三方去开发,所以毫无文档。它做到的,也不过是推出了官方的魔改方式——数据包,以及官方的变量映射表而已。网易推出了自己的基岩版开发框架,那个和U3D一样是给开发者用的,所以去寻求文档是正确选择。
没有金坷垃,怎么种庄稼?
不用肥料就不能种田吗?
实际上,如果你想开发mod,所学习的东西主要有三种:
·先驱者们写的mod开发教程。
·其他mod已经写好的同类范例。
·mc和forge自己提供的源码。
如果你不知道mc的某个类是干嘛的,那就查找它的所有引用,自己一点点分析。如果你不知道做某个功能该从何下手,那就先找教程,再找同类事物的源码。当然,如果你想做的东西前无古人,那么你自己就是研究者。从零到一的任务,交给你了,加油。