<基於1.8 Forge的Minecraft mod製作經驗分享>
首先看看一個mod的文件結構,懂Java的應該都看得懂:
src/main/
--java/com.xxxxxxxx.xxx/
----block/
----item/
......
----xxx.java
--resources/assets/xxx/
----blockstates/
----lang/
----models/
----textures/
----mcmod.info
可以看到在main文件夾下,有java、resources兩個文件夾,前者放Java源碼,後者存放要用到的資源,現在開始具體介紹:
-
首先,你需要一個用@Mod(modid = xxxx, version = xxxx)這個註解標識的Java主類作爲入口,對應上圖的xxx.java。Forge會根據這個註解識別到它。modid是你的mod的Id,即一個唯一標識你的mod的字符串,記得小寫,version是版本號,一個形如1.0.0的String。一般建議把這兩個String作爲常量定義主類裏,方便隨後的調用。
然後,你需要用@EventHandler註解標註幾個方法,使這個主類能夠真正的在Forge運行時做一些事情。這個註解是根據其標註的方法的參數來工作的,這裏有三個基本的參數:FMLPreInitializationEvent、FMLInitializationEvent、FMLPostInitializationEvent。這三個參數其實是三個事件,Forge會在MC開始時依次執行這三個事件。關於它們的具體分工我發現很難說清楚,還是在之後用到的時候再細說吧。
在我的鬥羅大(大)陸(坑)mod裏,主類是長這樣的:
@Mod(modid = DouroMod.MODID, version = DouroMod.VERSION) public class DouroMod { /**ModInfo*/ public static final String MODID = "douromod"; public static final String VERSION = "0.0.0"; ...... ...... @EventHandler public void preInit(FMLPreInitializationEvent event) { ...... } @EventHandler public void init(FMLInitializationEvent event) { ...... } @EventHandler public void postInit(FMLPostInitializationEvent event) { ...... } }
-
然後你需要對你的mod做一個描述,這部分內容在上圖中的mcmod.info裏面完成。裏面的modid、name、description等等都是顧名思義的,填上就行。需要注意version、mcversion別動,看得出那是佔位符吧,是由gradle搞定的,不需要你寫。另外,如果想要輸中文並正常顯示的話,需要把文件編碼調整爲GBK而不是UTF-8,有點奇怪對吧,所以建議別用中文,除非你想讓外國友人看到亂碼。
-
現在你的mod主類已經建立,並且用@Mod申明瞭mod的Id和Version,也爲你的mod添加了描述信息。但你還需要在build.gradle裏面同步的修改它們。在工程目錄下找到build.gradle並打開,可以看到裏面其實寫的很詳細,你需要改什麼,不應該動什麼。關鍵是把version = ""裏面改爲你的mod版本號,group = ""裏面寫你的包名com.xxxxxxxx.xxx,archivesBaseName = ""裏面寫mod的Id。
好了,運行試試看,在mod選項裏是不是已經看到了你的mod以及的描述信息了呢?我的Github鏈接https://github.com/zhengxiaoyao0716/DouroMod,快來一起做啊