
好,那麼這一期教程的內容主要是關於版本管理和簡單的註冊方塊與物品。版本管理很簡單,你只需要在網上搜索git,然後點擊下載,選擇適合你係統的版本,比如Windows 64位,然後安裝即可。安裝完成後,在IDE裡面找到設置,搜索git,然後在版本控制裡面配置好git。

測試一下,如果正確的話就可以了,如果不行可能需要重啟電腦。然後我們可以點擊左下角的git,如果你還沒有創建倉庫的話,會有一個創建git存儲庫的選項,點擊即可。然後我們再來提交一次,你可以看到,我已經把我們用不著的東西都刪完了,現在再提交一下。關閉提交窗口,然後勾選上要提交的文件,寫好提交信息,然後點擊提交。

提交完成後,我們再點擊git,就可以看到我們剛才提交了一個新模塊的提交。現在假如說我亂改了一些東西,不知道原來長啥樣了,怎麼辦呢?我們找到剛才的提交點,右鍵,然後將當前分支重置到此處,選中,然後點擊重置即可。這樣就可以還原到之前的版本了。版本管理工具非常方便。接下來我們來註冊方塊和物品。首先我們看看forge的文檔是怎麼寫的,他有兩個推薦的方法,一個是DEFAREGISTER,一個是register event。
我們就用DEFAREGISTER這個方法。我們直接學著文檔裡面的寫法,然後把該導入的東西都導入一下。為什麼我不直接給你寫而是要從文檔裡找呢?因為版本總會更新,每個版本可能會有變化,所以我希望即使過了幾個版本,教程還是能用。這個文檔雖然不是特別詳細,但可以作為參考,因為有一些複雜的東西光看文檔是寫不出來的,需要實際操作和經驗積累。
首先,我們已經複製了註冊方塊的部分,接下來我們照著寫註冊方塊的代碼。
我們可以使用 psf 來聲明我們的方塊。然後使用 RegistryObject<Block> 來聲明一個方塊對象,我們直接使用之前註冊的方塊。
然後,我們需要使用 Lambda 表達式來創建一個新的方塊實例。我們可以設置一些屬性,比如硬度為 3.0f,還可以設置聲音類型。我們可以從選項中選擇合適的聲音類型,比如作物聲音。
接著,我們需要給我們要註冊的方塊命名,我們就使用 myBlock。
寫完這個之後,我們需要在構造函數中將其註冊到遊戲中。
我們可以看看他怎麼寫的,但是這裡他註冊的是方塊,如果我們以後還需要註冊物品,註冊其他的東西,這個東西肯定是要用很多次的,所以我們直接把這個定義成一個變量。
然後導入,直接註冊我們的 blocks,然後調用 register bus 就可以了。
好,我們直接運行一下看看效果。
進入遊戲後,我們可以在物品欄裡面看到我們註冊的方塊嗎?沒有,因為我們沒有定義它在哪個位置。我們嘗試搜索物品,但是並沒有搜到。所以我們直接使用命令來放置方塊。使用命令 setblock 在我們的位置創建這個方塊。這樣就出來了我們註冊的方塊。然後我們可以切換到生存模式來看一下它的硬度。看起來還挺硬的,因為我們剛才設置了硬度比較大。
但是每次都靠命令來創建方塊肯定不方便,我們肯定是要把它拿在手上。但是按中鍵的時候我們卻發現有一個報錯,說這個沒有對應的物品。這是什麼意思呢?實際上,方塊在世界上是方塊,但在你的揹包裡,它是一種物品。所以我們需要給這個方塊註冊一個對應的物品。
因此,我們需要先定義一個註冊物品的變量。
首先,我們還是一樣,複製 VivStaticFinal,然後使用 DefaultRegister 來聲明註冊物品。我們使用 items 來聲明一個物品對象,直接使用 DefaultRegister,然後點擊創建。
然後,我們需要按照 Forge Registries 來寫。我們選擇 items,然後輸入 mod ID。
其實,大多數遊戲中的方塊,當拿在手上時,效果都是一樣的。放置方塊的物品實際上都是一樣的,右鍵把方塊放下去。所以 Minecraft 把這些東西都為我們寫好了,我們直接用就會有一個特殊的物品類型,叫做 BlockItem。
我們還是一樣,使用 RegistryObject<Item>,myBlockItem 等於 items 點 register。這是一樣的,因為那是物品,所以不影響。
然後,我們創建一個新的物品,new Item(BlockItem) ,需要傳入一個 block。我們直接使用 block 點 get,然後 new Item 點 Properties 就可以了,因為我們不需要任何特殊的屬性。
然後,block 點 items 點 register bus,這樣就註冊好了。
我們在遊戲中對著這個物品點擊中鍵,就會發現我們的物品已經存在,它的名字好像沒有翻譯,但是沒關係,好像我們就有了,對吧?
我們會發現一個問題,就是這個材質丟失了,沒有材質,也沒有名字,這個東西放在手上好像也不好看,太大了,很遮擋視野。我們找個其他的方塊對比一下,發現其他方塊在手上很小,也不遮擋視野。
那他們是怎麼做到的呢?很簡單,我們不知道他們怎麼做到的,所以我們去學。
那怎麼樣給我們的物品和方塊添加材質呢?首先,我們需要找到資源文件夾,就是 resource,然後在這裡打開文件資源管理器,找到了。
然後,我們新建一個文件夾,叫做 assets,用來存儲我們的材質數據資源。然後我們再新建一個名字,就是我們的 mod ID,表示我們的資源是要應用在這個命名空間下的。
我們按照原版的方式,需要創建 blockstate、model 和 textures。我們把這幾個都建出來。
首先,接下來就是要把這些東西填充進去了,對吧?在 models 裡面,我們也是需要的,需要一個 block,還要一個 item。然後在 textures 裡面,我們也需要一個 block。這樣就算創建好了,跟他這個目錄裡面都是有的,都是對得上的,block 和 item。
那我們這些東西創建好了以後,我就介紹一個工具,叫做這個 Blockbench,也可以在網上直接下載的。我們就直接選這個 Java 版方塊物品點創建新模型。
然後,負極模型怎麼選的,我們可以看一下原版的,他們這些 models 的負極模型都是怎麼選的。因為假如說我們現在就創建的是一個完整的方塊,我們也找一個完整的方塊啊。假如翻不到一個完整的話,就選一個煤炭塊,可以啊。它的負極模型是這個。
然後,我們給它直接複製過來,文件名是我們的這個 my block,因為我們是要給這個方塊創建材質的嘛。然後我們就點確定。
然後我們在這裡就可以添加一個塊兒,我們要做的是完整的,對吧?完整的一塊,所以我們這裡就是十六十六十六,這樣就是完整的。然後我們可以點到繪畫模式,然後先在這裡創建一個紋理名稱的,就是這個 my block 文件夾,就寫我們的這個 mod ID,就是 test mode,然後點確定。
這裡它就自動給我們生成了一個模型啊,你可以拿個畫筆在這裡畫幾下,隨便畫幾道,然後保存。保存的話,首先是保存這個模型的這個材質啊,我們就找到我們剛才的這個 src/main/resource,assets/test mode/textures/block,給它保存到這裡。
然後,這裡呢我們就選擇這個 Java Block Model,選它,然後把這個文件保存到我們的這個 models/block 裡面。好,這樣就保存好了,然後這個軟件的功能就到這裡,它已經幫我們把最麻煩、最難寫的東西已經寫完了。
那接下來呢,我們就看看還缺什麼?我們還缺 block states 和 model 裡面的 item,這個好說,我們直接找 item 裡面也找一個完整方塊的東西,複製一下 clay 吧。這是 parent 什麼,這個我們就忽略它。複製過來,改成我們自己的名字,就是 my block。這裡 parent 就是我們自己的 test mode,然後 block my block。
然後,這個 block states 我們就也找一個啊,我們就還是找一個 log states 裡面就找個 dirt 吧。這個就不錯,我們直接複製過來,改成我們自己的名字,然後這個裡東西的 model,當然要改成我們自己的 test mode my block。
在這裡刷新檢查一下 assets,點 test mode,然後 texture block 裡面是我們的材質,models block 裡面是我們的這個自動創建的這個文件,我們可以格式化一下,可以看看他是怎麼寫的,然後 item 裡面有這是我們這個 item,然後 models 裡面就是這些,然後 block states 這是我們剛才複製過來的。
有了這些文件之後,我們直接給它運行起來。你會發現,哇,我們這個東西有材質了。好,在這個揹包裡面也是有材質的,對吧?只是它現在還沒有名字。由於我們的模型比較簡單,所以我們也沒有特別複雜的功能需求。這就是我們這個方塊的材質非常簡單,你可以自己隨便畫。但是,沒有名字是不行的,我們再給它起個名字。
那我們就在 assets/test_mode 下面參照原版創建一個文件夾,叫做 lang。然後在 lang 裡創建一個文件,叫做 en_us.json 表示這是英語的。在這個文件裡,我們寫上 "block.test_mode.my_block": "Block",然後複製一份為中文 "block.test_mode.my_block": "我的方塊"。重新啟動遊戲,你會看到方塊的名字變成了“我的方塊”。
這樣方塊就有了自己的名字。我們這樣就簡單地創建了一個方塊,以及方塊所對應的物品。但是,之後我們需要對這個東西增加更多的功能。這一期先到這裡,下一期我們開始給這個東西加功能。