開發環境建置 === 是的,擁有一個正確且舒適的開發環境可以讓你在寫模組的過程中更佳的效率(๑´ڡ\`๑) 如果觀看本教學時遇到了困難無法解決,你也可以參考以下我推薦的教學文 [Cadiboo's Projects](https://cadiboo.github.io/tutorials/1.15.1/forge/) 在本章節你會了解 --- - 版本控制 - 如何下載用於開發的Forge - 如何設定你的build.gradle - 如何將專案匯入到Eclipse中並使用Forge Gradle完成你開發環境的設定 版本控制 --- 在一切的開始之前,你或許會想要用一個平台(Ex : Github)來幫助你完成你的版本控制 事實上,在等下的過程中,你會發現Forge給的開發包中帶著一個.gitignore 如果你常上CurseForge的網頁,不知道你是否有注意到幾乎所有的模組都有一個Source的Tab,大部分點進去會連進該模組的Github Repo  **恩,總之,版本控制是非常強烈建議要做的東西**(\`┌_┐´) 本教學的所有程式碼都會用Github提供的服務完成版本控制 這是公開的,你可以到[這裡](https://github.com/immortalmice/MinecraftForge1.15.2-ModdingTutorial)看到這整個教學的Repo 礙於篇幅的關係,這邊不會詳述Git和Github的使用方法 但是你可以自行尋找相關教學,或是我這邊也有提供一個教學文章´-ω-)b - [Git 與 Github 版本控制基本指令與操作入門教學](https://blog.techbridge.cc/2018/01/17/learning-programming-and-coding-with-python-git-and-github-tutorial/) 如何下載用於開發的Forge --- 首先,先進去[MinecraftForge的官方下載頁面](https://files.minecraftforge.net/) 由於本教學是基於Forge版本1.15.2-31.1.0 因此在左側欄位中找到1.15.2,點進去,你會看到兩個選擇  左邊的是目前最新的版本,右邊是推薦的版本,通常推薦的版本會相對穩定( \^ω^) 這邊選擇的是穩定版本,也就是1.15.2-31.1.0 如果你觀看本教學時,Forge已經為1.15.2更新了推薦的版本 1. 你可以選擇官方新的推薦版本 (M鼠建議用這個選擇) 2. 或是你可以點開下面的Show All Versions並找到1.15.2-31.1.0 > 時空M鼠:Forge目前已經更新了新的穩定版本31.2.0 > 如果你是已經安裝好開發環境,想要更新的話,請看[這篇教學](https://hackmd.io/@immortalmice/BJEsAlVj8) 如果你是要使用MinecraftForge遊玩模組的話,你通常會點Installer 但我們不是,我們今天是要來開發模組的,因此請點Mdkヾ(´ε\`ヾ)  之後你便會下載到一個forge-1.15.2-31.1.0-mdk.zip的壓縮檔 請把他移到你為模組開發準備的資料夾裡,解壓縮後你會得到許多檔案 解壓縮後,原本的壓縮zip檔便可以刪除了 解壓縮後的這些檔案有些很重要,有些並不重要,可以考慮刪除(✘﹏✘ა) #### 以下是非常重要,除非你知道你在做甚麼,否則請不要隨意刪除的(̿▀̿ ̿Ĺ̯̿̿▀̿ ̿)̄ - build.gradle 這是ForgeGradle(一個為你建立你的開發環境的工具)的設定檔 後面我們會來了解如何設定裡面的內容 - .gitignore 這是Forge為你準備好的Git忽略清單 如果你是使用git進行版本控制,請不要刪除它,否則你會同步一些根本不需要的檔案 不過,如果你了解.gitignore是什麼,新增修改裡面的清單是沒問題的 - gradle.properties 這是ForgeGradle在執行時會需要的參數 如果你知道裡面的數值代表什麼,修改他們也是可以的 - gradlew - gradlew.bat 這兩個檔案是ForgeGradle的執行腳本 一個用在類Unix系統環境,一個用在Windows環境 - gradle資料夾 裡面包含了Gradle執行時所需要的重要檔案,請勿刪除 - src資料夾 這就是你未來程式碼該放的位置ヽ( ̄■ ̄)ゝ 而現在已經預設幫你放入了一個examplemod的範例,未來我們會將他改成我們的模組 這個階段雖然刪除不會有甚麼影響,但這是一個MinecraftForge為你準備好的資料夾架構 未來用修改的方式就可以了,不需要直接刪除 #### 以下是不太重要或是根本不需要,可以考慮刪除的•_ゝ• - changelog.txt 這是MinecraftForge版本的更新紀錄 當你有要查詢更新紀錄的時候可以用到,除此之外刪除它是沒什麼問題的 - CREDITS.txt 這是MinecraftForge的致謝名單 基本上瞄過一遍,就可以帶著對裡面提到人員的敬意把這個檔案刪了(≧∀≦)ゞ - LICENSE.txt 這是MinecraftForge的條約聲明 M鼠曾想認真看過,但這東西真的太深奧了Zz(´-ω-\`\*) 法律阿......我頭好痛...... 對模組運行不會有影響,可以刪了 - README.txt MinecraftForge為了你而寫的ReadMe 裡面很簡略的介紹了如何安裝,只是.....恩,很簡略 裡面附的影片連結內容已經過時,不適合用在我們現在的版本 所以看過一遍就刪了吧 接下來,我們會用你載下來的東西進行建置開發環境 在這之後程式產生的檔案們,除非你了解它,否則請不要刪除(´・ω・\`) 如何設定你的build.gradle --- Gradle是一個非常強大的工具,可以幫你自動化某些工作 Forge用此建立出了一個可以幫我們建置開發環境的東西,稱作ForgeGradle ・ิ≖ ω ≖・ิ✧ build.gradle中包含了許多重要資訊給ForgeGradle執行時使用 但裡面有些欄位我們需要把它改一下,讓它符合我們接下來要寫的模組 1. version 裡面預設的值是1.0,我們把它改為**1.15.2-0.0.1.0** ```java= version = '1.15.2-0.0.1.0' ``` 事實上,這是你寫的東西,你有權決定你要如何為你的作品設定版本號 但為了讓所有人統一和方便溝通,還是來了解一下大家的共識吧(◉3◉) 首先,先寫下你的模組是對應Minecraft的哪個版本吧,這邊是1.15.2 一個橫槓後,就是你模組的版本拉,因為尚未發布,所以我們這邊主版本號是0 主版本號後面緊接的那個0,是你的模組API版本,因為尚未發布,這邊也是0 後面便是所謂的次版本號,跟Build版本號,這邊是1和0 對於Version要如何有理的增號,你可以看[這個Semantic Versioning](https://semver.org/) 不過事實上,[Forge官方的Versioning教學頁面](https://mcforge.readthedocs.io/en/1.15.x/conventions/versioning/)有非常棒且詳細的版本號說明,非常推薦大家看過一遍(,・ω・,) 2. group 裡面的預設值是com.yourname.modid,請把它修改成你要的東西 這邊簡單的來說就是你的名字,和你的模組id 事實上,通常會用模組或作者的網站作為決定 如果你沒有自己的網站,而你的模組是放在github上的,你可以使用Repo的網址 至於我這邊會選擇這樣寫 ```java= group = 'com.github.immortalmice.modtutorialim' ``` 請注意,無論如何,這邊所有的字母都要是小寫,原因是因為有些檔案系統是case-insensitive的 至於modid,請看第三項 3. archivesBaseName 裡面的預設是modid,這也隱含了要你在這填上你的modid的意思 modid,都說是id了,因此請盡量讓它處於唯一的狀態( ゚∀゚)o彡゚ 除了在你自己寫的多個模組中(如果有)保持唯一 也請盡量讓它不容易和其他的模組撞名 像是這邊我會填入 ```java= archivesBaseName = 'modtutorialim' ``` modtutorial很容易撞名,所以我多加了im,來自於我常用的名稱immortalmice 不一定要長才能避免撞名,我就看過有模組id是"cb"(;゚д゚) 雖然看起來是一個 **"最危險的地方就是最安全的地方"** 的完美代名詞 但我個人認為這樣捨去了"讓modid可以簡要說明模組用途",還是不推薦使用 4. mappings 這邊就是所謂設定MCP Mapping版本的地方 如果你還不知道MCP Mapping是什麼,建議先將[本教學的這篇前導文章之一](https://hackmd.io/@immortalmice/BJQZGVkuI)看完 這邊我們會保持原樣,也就是 ```java= mappings channel: 'snapshot', version: '20190719-1.14.3' ``` 這邊提起是為了如果你有想要改變MCP Mapping的需求,這邊就是你要更改的地方 順帶一提,如果你仔細看,也許聰明的你會發現 **這不是1.14.3版本的Mapping嗎?而且還是snapshot不是stable**(#\`皿´) 是的,這是1.14.3版本的Mapping沒錯,但我想它會在此出現便代表Forge推薦使用的Mapping是這個,所以我決定不去更動它_(√ ζ ε:)_ 事實上,MCP團隊還沒有任何對於1.15.2版本的Mapping發布,甚至最新的stable Mapping是1.15,1.15.1只有snapshot的Mapping 詳細你可以來[MCP Bot網頁](http://export.mcpbot.bspk.rs/)查看 > 時空M鼠:目前31.2.0的Forge推薦使用snapshot 20200514-1.15.1 的MCP Mapping 5. dependencies 如果你的模組是依賴其他模組的話,請修改這裡面的東西 裡面有註解給你幾個範例了,照做即可 如果你在這裏面有增加其他模組的話,你需要將對應且正確版本的Jar檔放進你的環境中 由於M鼠沒有相關經驗,有需求的各位還請自行查詢其他教學レ(゚∀゚;)ヘ=З=З=З 以上的部分都改好之後,我們就來試著用Forge Gradle把開發環境建立起來吧 如何將專案匯入到Eclipse中並完成開發環境的設定 --- 現在,打開你的Eclipse,如果有需要,請自行設定好你的workspace 打開左上角的File,選擇import  這邊我們要選擇Gradle -> Existing Gradle Project  接下來你可能會遇到協助你的小精靈,按Next就對了╮(╯_╰)╭ 一直到選擇專案資料夾的地方,把你剛才解壓縮的根目錄輸進去,然後按Finish  稍等一下後,你的專案應該就成功匯入了 這時候,你Eclipse下方應該有個Gradle Tasks,在裡面打開你根目錄的資料夾 這裡面就是所有ForgeGradle為你寫好的Task  這邊我們需要執行其中的幾個Task( ~'ω')~ 1. ide -> eclipse,連點兩次它就會開始執行了  這邊你會需要等它一點時間執行完他的工作 喔不,抱歉,不是一點時間,可能是很久 這Task中通常最耗時間的就是他幫你下載所有需要的檔案 然後設定好你的所有Eclipse相關資料 執行完後這時你的根目錄應該會多了許多資料夾 2. fg_runs -> genEclipseRuns  這邊它會幫你變出三個執行用的設定檔 - runClient.launch 這個會執行一個客戶端的Minecraft 就是你平常玩的可以選擇單人、多人等等的那個東西 - runServer.launch 這個會執行一個伺服器端的Minecraft 如果你開過伺服器,那就是你開伺服器時執行的那個東西 - runData.launch 這是一個很特別的模式,它只會跑所有的資料 像是生成合成表、方塊狀態的json檔之類的 基本上你不會用到它,~~我是直接刪了它~~( ゚∀゚)o彡゚ 執行完後你的根目錄應該會出現上述的這三個檔案 到這裡,去左邊對你的根目錄右鍵,選擇Refresh,因為我們要讓Eclipse發現到我們剛剛執行Task產生的檔案們 然後選擇上面的Run -> Run Configurations  如果你很幸運,那你應該會看到左邊的Java Application裡有三個剛剛產生的runXXX躺在那裏 ( ゚∀゚) ノ♡  如果沒有,但你很確定這三個檔案有生成,而且在Eclipse左側檔案樹狀圖中有看到這三個傢伙 你可以連點Java Application兩下,如果老天有保佑,Eclipse應該會回過神來發現有這三個Java Application類別的launch檔(σ′▽‵)′▽‵)σ 如果不小心創了新的Run Configurationuf且不是本意的話,刪掉即可 這時,連點兩下runClient,就會開始執行Client端的Minecraft 它首先會執行一個FML early loading process的白視窗 FML是Forge Mod Loader,就是加載你模組,讓裡你模組參與Minecraft的傢伙ε٩(๑> ₃ <)۶з 之後新的視窗會出現,沒意外,你應該可以看到熟悉且令人興奮的Minecraft標題畫面  恭喜你,這就是你未來會做好幾百遍的動作 寫程式碼 -> 執行 -> 發現Bug -> ~~先吃布丁壓壓驚~~ -> 修改程式碼....如此循環( º﹃º ) 打開標題畫面中第三排左邊的Mods灰色按鈕 你應該可以看到Mod列表裡有三個人 - Minecraft - Forge - ExampleMod ... **欸等等等,我的模組咧**(╬☉д⊙) 恩......這個ExampleMod是你下載的包中Forge為你準備的範例模組 接下來,我們就把這個ExampleMod改成自己的模組吧 請看下一章節:[模組的入口](https://hackmd.io/@immortalmice/SJl_rrJdU) --- *本頁面撰寫於2020/04/28,目前最後更新日期為2020/05/22* *若上述時間與你閱讀的時間相距過遠,請自行斟酌是否採用本頁面的資訊* *完整的程式碼可以到本教學文的[Github Repo](https://github.com/immortalmice/MinecraftForge1.15.2-ModdingTutorial)中查看*
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up