大家好,我是poker,這是2024的IThome鐵人賽我又來參加了,這次的主題是使用Fabric製作Minecraft Java 1.21版本模組。
先給不知道Minecraft是甚麼的讀者一些科普,簡單來說Minecraft是一款世界級的遊戲,玩家可以在以像素與方塊構建的遊戲世界中透過探索、製作與創造遊玩,這款遊戲之所以火紅的特殊之處在於遊戲允許玩家透過撰寫程式製作模組的方式增加遊戲的內容,擴展其可玩性,這就是所謂的模組。
在過去,Forge是Minecraft模組社群開發框架至高無上的霸主,提供許多工具給玩家與開發者使用,是想要遊玩或開發繞不開的名詞。但是在近幾年,由於(以下內容源自網路八卦,不代表本台立場)以Forge為中心的模組社群逐漸僵化,一個新的框架逐漸興起,那就是Fabric,Fabric作為新興框架,在架構與性能上較為優秀,且更簡潔,同時新社群也更開放,比較歡迎像是我一樣的菜鼻八,基於以上幾個原因我這次會使用Fabric做為開發框架。
我在2023年的鐵人賽也參賽過,主題同樣也是Minecraft Java模組製作,在玩賽之後,我就一頭扎進大三專題與課業的海洋,2024年的鐵人賽我希望透過類似的主題來驗證過去一年我的程式閱讀與撰寫的能力。
以下是我是我在學習Minecraft模組撰寫的過程中使用到的資料來源。
首先是Modding by Kaupenjoe的Fabric Modding Tutorials - Minecraft 1.20.X
接下來是MineColonies,一款Forge製作的模組,畢竟是以Minecraft為基底,很多地方差異性其實不大,我會閱讀他們的開源程式碼來增進自己的了解
還有這款同樣也是Forge的模組
其實我還有看過很多不同來源的資料,在這邊就不一一列舉,在鐵人賽結束後我可能會統整我看過的開源程式碼或其他資料,一次性放上來。
現在讓我們開始無趣的環境設定,我們需要三樣東西來構成我們開始開發模組的環境,分別是JDK、IntelliJ以及Fabric
我們需要JDK,也就是Java開發工具來開始我們的Java模組製作,我個人使用的是Java SE,版本是Java17.0.11,請注意在Minecraft1.18之後開發模組要使用版本17。
接下來我們需要編譯器,我使用的是IntelliJ,這是目前Java開發環境數一數二好的編譯器。
最後是我們的Fabric,先上連結
進去之後我們會看到這個頁面
點中間的Develop a Mod
點選Project Templates下方第三個按鈕 Online Template Mod Generator
現在我們已經進入到Fabric的模組模板生成器中了,我們現在需要為我們的模組設定幾個東西
相信你已經看到Mod name大字,以及底下說明文字中的use custom ID,請幫我按下這個use custom ID,Mod Name跟Mod ID
Mod Name 跟 Mod ID是兩個完全不同的東西,Mod Name是給人看得,也是玩家看到的你的模組名稱,你可以在Mod Name的部分有空格出現,格式比較沒有要求。
Mod ID是我們在程式中告訴機器的模組名稱,是給機器看的,這個Mod ID最好簡潔一點,且全部使用小寫英文,不能空格,只能使用 _ 作為分隔工具,這個Mod Id我們會頻繁用到,記得不要太奇葩。
接下來packge name可以照他推薦的使用name.ModId的格式去寫
下面這邊可以看到有選版本的地方,我們選1.20.1,這是我目前在的版本。
大家應該有看到下面幾個選項中的Data generation,請一定要勾起來,Datagen是一個非常重要的功能,可以讓我們不需要為每個物品或合成表之類的東西手寫JSON檔,我們之後會講到,現在先幫我勾起來。
還有Split client and common sources選項請幫我取消勾選,這個功能可以將Client與Server程式分隔開,這兩個分別是客戶端與伺服器端,各自有自己的專屬程式,在錯誤的地方使用會崩潰,不過我們可以在程式中避開這點,沒有必要直接分開。
接下來按下下載按鈕應該就會有一個壓縮檔,可以幫我解壓縮,我們明天就可以進入到程式環節了。