Fabric是Java版Minecraft的模組載入器,近年來發展快速、相容性佳的特性,使其成為Forge的強勁對手,很多人開始用這個製作模組。
開發模組,你需要具備以下知識:
- 熟悉Java語法
- 電腦能正常執行Minecraft 1.17.1
- 會安裝fabric模組
- 有用英語google錯誤訊息的能力
第一篇教學是設定開發環境,和製作一個只有圖示的空白模組,放到遊戲中測試。
一、開發環境設定#
1.安裝AdoptOpenJDK 16。 1.17開發模組必備,如果有裝其他版本的Java,請自行調整環境變數"JAVA_HOME",確保目前作業系統都是使用Java 16。(參考: java 環境變數)
這裡使用AdoptOpenJDK而非Oracle公司發行的JDK,功能一樣,只是授權條款不同。
2.選擇一款IDE
IDE是開發程式碼的環境,好的IDE會在你打錯字告訴你,並提供很多方便的功能。在此我們選擇JetBrains發行的IntelliJ IDEA。
到官網的 下載頁面,下載安裝右邊黑色的Community免費版。
二、設定專案#
1.從 Github將官方的"fabric mod"範本複製到電腦 (按Code→Download ZIP),解壓縮,將"fabric-example-mod-1.17"放到桌面。
2.開啟IDEA,點選右上角的"Open Project",選擇fabric範本的資料夾。
3.開啟之後,下面的Gradle會開始工作,等待訊息出現"BUILD SUCCESS",就表示完成了。 Gradle是一個自動化工具,能夠自動處理一些開發上的繁瑣操作。
4.從左邊的面板開啟"gradle.properties",設定模組名稱與JDK路徑。注意目前Minecraft版本的部分是1.17.1,其他版本請到fabric 網站查詢。 原本長這樣:
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G
# Fabric Properties
# check these on https://fabricmc.net/versions.html
minecraft_version=1.17.1
yarn_mappings=1.17.1+build.39
loader_version=0.11.6
# Mod Properties
mod_version = 1.0.0
maven_group = com.example
archives_base_name = fabric-example-mod
# Dependencies
fabric_version=0.39.2+1.17
修改之後 ("#“開頭的是註解,自行刪除):
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G
# 指定JDK路徑
org.gradle.java.home=C:/Program Files/Eclipse Foundation/jdk-16.0.2.7-hotspot
# Fabric Properties
# check these on https://fabricmc.net/versions.html
minecraft_version=1.17.1
yarn_mappings=1.17.1+build.39
loader_version=0.11.6
# Mod Properties
# 模組版本號取名:遊戲版本+模組版本
mod_version = 1.17.1-0.0.1
# 以網站名稱命名,如果沒有就電子郵件倒著寫。例如"com.gmail.ivon"
maven_group = net.mcbedev
# 模組ID。
archives_base_name = mymod
# Dependencies
fabric_version=0.39.2+1.17
5.調整完之後,按File -> Close Project,關閉這個專案,接著重新開啟專案。
6.展開src/main/java資料夾,會發現範本已經提供了一個範例"net.fabricmc.example”。這就是Java中所謂的"package",你可以保留參考用,因為我們要用的專案應該跟上面gradle.properties檔案裡寫的一致。
7.對"java"資料夾按右鍵,New -> Package,輸入package的名稱,例如"net.mcbedev.mymod"
8.展開"resources"資料夾,開啟"fabric.mod.json",這個檔案是我們模組檔案的資料。 修改內容如下 (//是註解,一定要刪除):
{
"schemaVersion": 1,
//模組ID,必須獨一無二
"id": "mymod",
"version": "${version}",
//模組名稱
"name": "My Mod",
//模組簡介
"description": "My Fabric Mod.",
//作者
"authors": [
"Ivon852"
],
//聯絡資訊
"contact": {
"homepage": "https://twitter.com/ivon852",
"sources": "https://github.com/FabricMC/fabric-example-mod"
},
//授權條款
"license": "MIT",
//模組圖示路徑
"icon": "assets/mymod/icon.png",
"environment": "*",
//主程式路徑
"entrypoints": {
"main": [
"net.mcbedev.mymod.Main"
]
},
//Mixin路徑
"mixins": [
"mymod.mixins.json"
],
"depends": {
"fabricloader": ">=0.11.3",
"fabric": "*",
"minecraft": "1.17.x",
"java": ">=16"
},
"suggests": {
"another-mod": "*"
}
}
9.對"mixin.modid.json"按下右鍵,Refactor -> Rename,改名成"模組ID+mixins.json",在跳出的視窗按下Refactor。
10.開啟該檔案,輸入以下內容:
{
"required": true,
"minVersion": "0.8",
"package": "net.mcbedev.mymod.mixin",
"compatibilityLevel": "JAVA_16",
"mixins": [
],
"client": [
"MymodMixin"
],
"injectors": {
"defaultRequire": 1
}
}
11.對"net.mcebedev.mymod"右鍵 -> New -> New Java Class,取名為"Main",這就是主程式的類別。
12.在Main裡面輸入以下內容。整個模組的程式會從這裡開始,也就是onInitialize()方法來初始化模組的東西。System.out.println則是會在模組啟動時,於終端機顯示該行文字。
package net.mcbedev.mymod;
import net.fabricmc.api.ModInitializer;
public class Main implements ModInitializer {
@Override
public void onInitialize() {
System.out.println("Hello Fabric world!");
}
}
13.展開"net.fabricmc.example",拖曳"mixins"資料夾到"net.mcebedev.mymod"。會跳出視窗,按下Refactor。
14.這樣這個資料夾就會跑到我們的package下面。展開"mixins",對"ExampleMixin"按下右鍵,同樣Refactorr -> Rename,重新命名成"MyModMixin"。
15.接著來新增模組的圖示。模組的圖示要放在/resources/assests/mymod/裡面。因此將"assests"展開,對"assests.modid"按右鍵Refactor,改名成"mymod"。
16.可以看到裡面已經有一個"icon.png"的範例圖片了,這就是模組圖示。按右鍵 -> Open in -> Explorer,接著檔案總管就會開啟,跳出這個檔案的所在位置。你可以把這個圖片改成自己喜歡的,名字仍然叫做"icon.png"。
17.到這邊為止,我們已經完成了一個空白模組!什麼都沒有,但至少fabric可以讀取到這個模組。
三、測試模組#
要測試模組有以下二種方法:
以Minecraft實例測試模組#
直接在IDEA中啟動Minecraft,fabric會自動載入目前開發中的模組。 這裡的Minecraft是獨立的,資料放在專案資料夾/run裡面,因此不用擔心會影響到Minecraft啟動器的資料。 1.點選右上角的綠色播放按鈕,啟動Minecraft Client。
2.終端機會開啟,開始啟動Minecraft。 如果你眼睛夠利的話,會看到這條訊息,就是剛剛在Main.java裡面寫的訊息成功顯示出來了。
3.成功開啟Minecraft後,毫無反應,因為fabric預設沒有介面顯示你裝了那些模組。 但為方便以後測試模組,你可以先創造一個世界。 退出遊戲後,終端機會顯示程式結束。接著來看如何將模組放到真正的Minecraft中測試。
實際放到Minecraft中測試#
將你的模組打包成.jar檔,變成一般fabric模組,透過Minecraft啟動器來正式載入你的模組。
1.展開右邊的Gradle。展開"Task"-> “build”,對build按二下,就會開始打包。
2.打包好的檔案會放在/build/libs/
,後面沒有dev或sources的就是一個可以使用的模組檔案,也就是"mymod-1.17.1-0.0.1.jar"
3.就像正常安裝fabric模組一樣,用檔案管理器將這個檔案移動到.minecraft/mods/資料夾。 在啟動Minecraft之前,請確定已經有安裝 Fabric API和 Mod Menu這二個模組,前者為必須,因為這個範本需要依賴Fabric API才能運作。
4.啟動之後,就會看到我們的模組顯示在模組列表中了。