close

這一章會開始教大家如何寫一個mod進入點
到目前為止,大家安裝了MCP,也安裝了Forge,接著就是要讓Forge的FML可以辨認出你的mod然後將其載入
要做到這件事情,你需要建立一個mod的核心物件

你會發現到每個mod都會有一個class是"mod_"開頭的,這就是mod的核心物件,我們這章就要教大家怎麼做,而且是使用FML方式而不是ModLoader相容模式

首先筆者會參考這篇教學文:
http://www.minecraftforge.net/wiki/Tutorials/Upgrading_To_Forge_for_1.3.1
但因為全部遵從的話其實難度偏高,所以我會用自己的方式去解釋而不單單是翻譯

開始做吧: 
 1.首先,開啟ecplise,將worksapce指向正確的路徑
2.接著, 在左邊的package Explorer內,指到路徑Minecraft/common/net.minecraft.src
 1  


3.在上面按右鍵,新增一個class(New->class)
 2  


名稱可以自己取,但一定要以"mod_"做開頭。其他的都不用改,按Finish

4.接著編輯器會自動開啟這個新class,內容只會有基本的定義

3  

5.FML方式和ModLoader不一樣的點在於,ModLoader是用繼承BaseMod的方式讓ModLoader辨認核心物件,而FML是使用Annoation。
(Annoation算是一個不太在常規程式教育出現的技巧。至少筆者在大學碰java時沒看過,在考OCJP時也沒看過)

在class的簽章上一行(就是"public class ..."的上一行)加入@Mod(modid, name, version)
modid是你這個mod的獨特ID,取一個自己喜歡的lucky number(string型態)
name是你這個mod要供FML辨認的名稱,也是自己喜歡就好(string型態)
version是你這個mod的版本值,只需要按你的規則去定義就好(string型態) 

例圖中我們輸入@Mod(modid = "2012", name="firstMod", version="0.1")

4 

怎麼紅字了!! 
別怕,你只需要 移移滑鼠選擇"Import 'Mod'"就可以消除了。

6.接著我們要定義載入函數。
在ModLoader的時候,有一個abstract函數叫做load(),就是載入函數
而在FML,同樣使用annoation來定義載入函數,而且有三種載入函數可以定義:
@Init:讀到此mod才執行的函數,大部分的載入函數都該放在這個annoation的函數底下
@PreInit:會在讀入其他mod之前優先執行這個annoation的函數,在定義一些和其他mod連動的函數時會用上
@PostInit:官方說明是會在讀入所有mod之後執行,目前筆者找不到用途 

你可以選擇其中幾個來定義,而不需要全部定義
這次我們定義@Init就好了,函數名稱可以自己取,只是要確保你必須把@Init放在函數簽章的上一行 

5

一樣,出現紅字時選擇:"Import 'Init'"

7.到此,一個mod進入點就完成了。
沒錯!這個mod是完全空白的!如何加入東西是以後再教(被打
我們點選上面的綠色箭頭旁邊的黑色箭頭並選"1 Client"

6  

 

8.Minecraft會開始啟動。我們靜候到主畫面之後選"Mod"按鈕,你應該可以在裡面找到你的mod的名字,代表你的mod已經被正確辨認和載入。

7  

 

下一章開始就正式進入新增物件的教學,敬請期待

arrow
arrow
    文章標籤
    minecraft mod java
    全站熱搜

    fls81245 發表在 痞客邦 留言(9) 人氣()