這一系列的教程呢,我們來學習關於《我的世界》的mod開發,針對Forge的mod開發。本次我們使用的版本是1.20,目前應該是1.20.1是最新的版本。想要進行mod開發,我們需要做一些準備工作。
首先,最基礎的一步是要熟悉Java的基本語法。雖然網上有很多教程,但很多內容可能已經過時,教授的仍是Java 7之前的知識。我們知道1.20版本使用了Java 17,其中包含許多新特性如Lambda表達式和record等。因此,有必要學習這些新特性,尤其在mod開發中經常會用到Lambda表達式和方法引用等。
另外,國內鏡像存在一些問題,比如部分鏡像已經關閉,更新速度較慢等,因此要找到穩定的途徑訪問國際互聯網,而且不能使用HTTP代理,需要通過操作系統的命令行設置。
接下來,需要安裝開發環境,首先是安裝JDK。從Java 9開始,Oracle不再提供官方的JRE,而是採用模塊化的方式。用戶可以自行打包所需的運行庫,只包含程序需要的部分,而不是整個Java運行庫。因此,只需安裝JDK即可,可以選擇合適的下載站點進行下載和安裝。至於其他平臺的安裝方法,可以根據操作系統自行查找相關資料。
安裝完JDK後,我們需要安裝一個開發環境,主要有兩個選擇:Eclipse和IntelliJ IDEA。雖然兩者都可以使用,但我更推薦使用IntelliJ IDEA。當然,如果你習慣使用Eclipse也沒有問題,兩者並無絕對優劣之分,根據個人喜好選擇即可。
對於IntelliJ IDEA,它有專業版和社區版,而我建議使用社區版。你可以在官網搜索到IntelliJ IDEA,然後找到社區版下載頁面,避免使用破解補丁等方式獲取完整版。社區版已經足夠滿足我們的需求,其中包含了我們所需要的功能。
第三步是安裝Forge Mod開發環境。您可以去Forge官網下載,並且IntelliJ IDEA還有中文語言包插件可供下載。關於Forge Mod開發環境的具體安裝步驟,您可以在Forge官網上查找相關指引,選擇適合1.20.1版本的Mod開發工具進行下載安裝。
如果在下載過程中遇到廣告頁面或者鏈接不明確的情況,可能需要等待一段時間或者留意倒計時後跳過廣告頁面。同時,如果網絡情況不佳,可能會影響到頁面加載和下載速度,請耐心等待或嘗試其他網絡環境。
安裝完JDK後,我們打開IntelliJ IDEA並選擇解壓的文件夾,點擊"Gradle",然後確認並選擇"作為項目打開"。一定要記得點擊"作為項目打開",接著可以在左下角點擊"構建"來查看構建進度。如果您的界面看起來與我的不同,可能是因為您以前已經下載過,所以沒有顯示新的UI。您可以根據個人喜好選擇使用舊版UI還是新版UI,在設置中找到"外觀和行為",勾選啟用新UI和緊湊模式,使界面與我的一致。
在第一次構建時可能會花費較長時間,請耐心等待直至出現"Build Successful",這需要良好的網絡連接,特別是在第一次構建時需要下載許多依賴項。如果網絡狀況不佳,可能會導致下載失敗。流暢訪問網絡對於成功構建項目非常重要。
完成以上步驟後,我們需要對一些內容進行修改。首先是Java文件中的包名和類參數,然後是在"GRADLE"的"properties"中調整一些參數。注意要根據Forge官網上顯示的版本信息進行相應的更改,包括Mac版本、Forge版本和混淆映射表等。混淆映射表是將混淆過的類名翻譯成可讀性較強的名稱,這對於理解代碼結構非常重要。您可以在Minecraft Wiki上找到相應的混淆映射表,以便更好地理解和開發Mod。
這個類在被混淆後,例如被命名為EGE,實際上可能代表著其他名稱,比如某個參數被混淆成了C,另一個參數被混淆成了A等。然而,現有的混淆映射表通常只提供包名和類名的翻譯,缺少方法名、參數名以及成員變量名的對應關係。這樣就會導致我們看到方法後面的參數時,雖然知道參數的類型,但無法直接得知參數名。
在外部庫中,比如Minecraft Forge中的net.minecraft下,我們可以找到具體的包,比如"world.entity.animal.Chicken",來查看混淆後的寫法。雖然官方未提供參數名的翻譯,但基於參數的類型往往可以推測出參數名,比如"serverLevel"可能被混淆成小寫的"serverlevel",這些都是根據Java的語法規則來推斷。
雖然混淆後的代碼仍然可運行,因為參數類型已經被正確解析,但看起來確實不夠友好。為了解決這個問題,存在一種名為"Parchment"的方案,它可以將參數名稱也翻譯成可讀性更強的形式。您可以通過訪問相關鏈接瞭解更多關於Parchment的信息,以便獲得更清晰的代碼理解。
需要注意的是,由於Parchment需要逐步翻譯大量的參數名稱,更新速度可能較慢。如果當前版本尚未涵蓋1.20版本,您可以留意更新情況,以便在新版本發佈後使用其提供的參數名翻譯服務。
在設置Mod Idea時非常關鍵。您可以將Mod Idea直接修改為您自己的Idea,給您的Mod起一個名稱。如果您不確定要使用什麼名稱,可以先選擇一個通用的名稱,比如"test mod",然後在Mod Idea中寫入全小寫、無空格、長度適中(11~63個字符)的名稱,例如"testmod"。
接下來是Mod Lessons,這裡需要指定您的Mod所遵循的授權協議,即別人如何使用您的Mod。您可以選擇適合您需求的協議,比如GPL3.0。如果您不確定選擇哪種協議,可以點擊提供的鏈接查看一些建議的協議,或者參考一些知名項目所採用的協議進行借鑑。請務必注意查看所選擇的協議內容,確保您認可其他人按照該協議使用您的作品。若您認為GPL3.0是合適的選擇,則可以直接填寫為GPL3.0。
最後是Mod Verse,這裡指定您Mod的版本號,比如1.0。填寫適當的版本號即可。在進行Mod Grow排地時,您需要填寫您包的名稱。如果您使用Forge,默認會生成一個示例Mod,其中包含視力Mod的包名。您需要將其更改為自己的包名,例如命名為"test mod"。不僅要修改這裡,還要確保其他相關位置也做了相應的修改。
接著是Mod的作者名,您可以直接填寫您的名字,並用逗號空格隔開。如果有其他人一起協作製作此Mod,可以繼續列出其他人的名字,例如"GitHub, GoodPilot"。
在Mod的描述中,甚至提供了使用轉義字符斜槓N來換行的提示,這對新手很友好。您可以寫幾句關於Mod的描述,比如"測試Mod",然後保存。
若發現有多餘的內容,可以刪除掉。示例Mod也可以改成您自己的主類的名字,比如"Mod"或者"TestMod",只要您認得這是主類即可。進行重構後,進入主類文件,找到mod idea的字符串,並設置為您的Mod Idea,最好直接複製粘貼以確保正確性。
完成以上步驟後,點擊加載Gradle進行更改,查看構建進度。通常情況下,構建速度較快。等待執行完畢並顯示"build successful"後,表示修改完成。
接著我們點擊這個task,然後選擇forge gradle rs。根據您使用的IDE不同,具體操作也會有所差異。比如說,如果我們使用的是IntelliJ IDEA,只需要雙擊它即可執行。這一步需要網絡環境,因為需要下載許多必要的文件和依賴項,等待下載完成後會顯示"build successful"。
完成上述步驟後,可以關閉這個窗口,然後找到啟動選項。在這裡選擇"run lint",這將啟動一個客戶端來測試您的Mod。如果有其他的任務暫時用不上,可以暫時忽略。
接著是"run data",這部分目前暫時不需要用到;而"run server"則用於啟動一個服務器以測試Mod,但對於初學者來說可能還不需要考慮這個。
在運行Lint任務時,您可以選擇“運行”(Run)或“調試”(Debug),運行就是啟動在正常情況下的遊戲模式,而調試則是在開發環境中進行Mod的調試,您可以設置斷點等。首選我們選擇調試模式。
等待窗口成功加載完成,確保配置沒有問題。稍等片刻,如果出現彈窗,可以繼續然後關閉。確認Mod已經成功啟動後,點擊"quit"退出。
這樣完成了整個開發環境的配置。以上就是本期教程的內容,我們做好了一些準備工作,安裝了開發環境。下一期將正式開始我們的mod開發過程。