哪里可以找到mod的API手冊/文檔?
沒有API文檔,
即使有人把文檔擺在你面前,
也不要信。
沒有文檔、沒有文檔、沒有文檔。我重復(fù)了很多次了。
嚴謹一些來說,就1.12.2 forge而言,多數(shù)類的API沒有文檔予以闡釋。
當(dāng)然,如果你用的是網(wǎng)易的python MDK,或者高版本的數(shù)據(jù)包,那些可以有文檔,沒問題。
1.12.2forge引入的類,那個也可以有文檔,沒有問題。
但是多數(shù)情況下,你需要跟mc自己的類打交道,那個是真的不存在可信文檔。
為什么?
思考一下forge的歷史和本質(zhì)就明白了了。
Minecraft發(fā)布后,反編譯得到過的代碼是經(jīng)過了混淆的?;煜螅涌诘拿志拖袷?a aa aab這樣,完全不可讀。然而,社區(qū)一部分人,人力解讀這些天書,強行給他們起了新的名字,比如getEntityEquipmentSlot。除此之外,為了讓不同的mod加?xùn)|西時不至于沖突,forge還寫了一些中間層的代碼。這些中間層代碼確實有一定程度的文檔。
既然你知道這些東西是人力解讀的,那它不可避免地就有風(fēng)險。顯然,forge不能保證自己解讀正確,比如1.12.2里實體類的isNonBoss接口,在1.16里,經(jīng)由官方公布正確答案,它就變成了完全不同的名字:canEntityTravelBetweenWorld什么的,具體拼寫我不記得了。
如果你看它的1.12.2名字,你可能會覺得它用于表示是否為boss,然后越走越偏,最終得出釣魚鉤是boss的結(jié)論。如果forge真的寫了文檔,那也勢必是在這種錯誤基礎(chǔ)上把人帶跑。
forge還有一些東西未做解讀,比如,世界生成代碼里大量的局部變量,看著就讓人頭皮發(fā)麻。這些東西自然也不會有文檔。
事實上,商業(yè)游戲在寫代碼的時候,未必會有配套的文檔。往往版本催得很緊,寫代碼本身都來不及了,哪還有時間寫配套文檔。如果Minecraft開發(fā)者自己都沒有文檔,你指望forge的人給你寫一個出來嗎?更不靠譜。

那么為什么總有人求api文檔?
因為很多程序員習(xí)慣于使用既有的游戲開發(fā)引擎,比如Unity3d。這種東西,它的目標一開始就是讓人能用,所以會生產(chǎn)出配套的可靠文檔。這種情況下,參閱文檔就是正確的開發(fā)方式。
如果一個人之前習(xí)慣和這種東西打交道,那么他過去帶來的經(jīng)驗就會促使他去尋求文檔。
Minecraft這種商業(yè)游戲,一開始就沒打算讓第三方去開發(fā),所以毫無文檔。它做到的,也不過是推出了官方的魔改方式——數(shù)據(jù)包,以及官方的變量映射表而已。網(wǎng)易推出了自己的基巖版開發(fā)框架,那個和U3D一樣是給開發(fā)者用的,所以去尋求文檔是正確選擇。
沒有金坷垃,怎么種莊稼?
不用肥料就不能種田嗎?
實際上,如果你想開發(fā)mod,所學(xué)習(xí)的東西主要有三種:
·先驅(qū)者們寫的mod開發(fā)教程。
·其他mod已經(jīng)寫好的同類范例。
·mc和forge自己提供的源碼。
如果你不知道m(xù)c的某個類是干嘛的,那就查找它的所有引用,自己一點點分析。如果你不知道做某個功能該從何下手,那就先找教程,再找同類事物的源碼。當(dāng)然,如果你想做的東西前無古人,那么你自己就是研究者。從零到一的任務(wù),交給你了,加油。