自訂模型
EliteMobs 透過 Model Engine 與 FreeMineCraftModels 支援自訂模型。
前言
從 EliteMobs 的角度來看,自訂模型系統非常簡單,因為管理員唯一要做的就是在 NPC 或自訂 Boss 設定檔中加入一行,告訴它要使用哪個自訂模型。然而,要讓這個系統完全運作,必須在 Model Engine 與 Minecraft 上採取正確的步驟,而這些就沒那麼容易上手了。
本指南會詳細說明與 Model Engine 及 Minecraft 之間的銜接部分。它不會告訴你如何使用 Blockbench 來建立自訂 Boss,也不會詳細說明 Model Engine 如何運作。關於那些,別處已經有大量的指南,如果你想進一步了解那些系統,直接查看它們的文件會更有幫助。
FreeMineCraft Models
如果你想學習如何使用 FMM 來讓你的模型運作,那麼你可以查看這個 Wiki 頁面以了解更多。
基岩版(Geyser)支援
基岩版玩家(透過 Geyser/Floodgate 連線)是否能看到自訂模型,完全取決於你的模型外掛(ModelEngine 或 FreeMinecraftModels)與你的資源包設定,而非取決於 EliteMobs。EliteMobs 確實會偵測基岩版用戶端,但它將該資訊用於選單算繪與名牌定位之類的用途 —— 它不會產生或提供另一個基岩版相容的模型。關於基岩版/Geyser 模型支援,請參閱你的模型外掛文件。
LibsDisguises 整合
EliteMobs 也支援 LibsDisguises 作為自訂模型的替代方案。當未設定自訂模型時,EliteMobs 可以使用 LibsDisguises 來改變實體外觀。此整合會自動處理名稱可見性同步。
若要使用 LibsDisguises 而非自訂模型,請設定你的 Boss/NPC 偽裝設定,且不要指定 customModel 欄位。
腳本化物品模型(FMM)
EliteMobs 的自訂物品可以使用 FreeMinecraftModels 的腳本化物品系統,以實現進階的模型 + Lua 腳本行為。這超越了靜態自訂模型 —— 腳本化物品可以透過 Lua 腳本對裝備、攻擊、右鍵以及許多其他物品事件做出反應(FMM 總共提供 22 個物品腳本掛勾)。
要使用此功能,請在你的自訂物品設定中將 scriptedItem 欄位設定為 FMM 的物品 ID。EliteMobs 負責處理名稱、說明文字、附魔與等級;FMM 則提供 3D 模型與腳本行為。
# EliteMobs 自訂物品設定範例
material: IRON_SWORD
name: "&cFlame Blade"
enchantments:
- "FIRE_ASPECT,2"
scalability: scalable
scriptedItem: flame_blade
關於撰寫物品腳本,請參閱 FMM Lua 入門指南;關於開發者整合的詳細資訊,請參閱 FMM API 指南。
最低需求
EliteMobs、Model Engine R3.0.0* 或更新版本 或 FreeMinecraftModels、Blockbench**,以及一個 Minecraft 資源包。
* 此外掛可能還有其他相依套件。請查看它們那邊的文件。
** 建立與編輯自訂模型時所需。如果你只是想安裝內容而不加以修改,則不需要。
如果同時安裝了 ModelEngine 與 FreeMinecraftModels,EliteMobs 預設會使用 FreeMinecraftModels。同一時間只會有一個自訂模型外掛處於啟用狀態。
手動設定自訂模型
注意:本指南假設你已經有一個有效的自訂模型。這些模型以 Blockbench 檔案格式(.bbmodel)提供。
EliteMobs 能夠為 NPC 與自訂 Boss 使用自訂模型。兩者的操作流程相同,如下所示:
步驟 1. 設定 EliteMobs 設定
前往你想修改的自訂 Boss 或 NPC 的設定檔,並加入以下這一行:
customModel: modelname
將 modelname 替換成你的模型名稱。該名稱是你所使用的自訂模型檔案的名稱。舉例來說,測試 Boss 的自訂模型檔案是 showcase_boss.bbmodel。因此,設定選項應為
customModel: showcase_boss
EliteMobs 的部分就這樣!現在就會變得稍微棘手一點了。
步驟 2. 產生 Model Engine 資料
注意:如有疑問或問題,請參閱此處的 Model Engine Wiki。
- 將你的自訂模型 Blockbench 檔案(
.bbmodel)放入目錄(yourServer)/plugins/ModelEngine/blueprints。 - 執行指令
/meg reload。如果一切正常運作,你應該會看到一則訊息顯示[Model Engine] X models loaded,其中x是你已註冊的模型數量。
步驟 3. 散布資源包
如果你想讓你的伺服器管理下載,這可能是最棘手的部分。在研究如何自動散布資源包之前,請先檢查當你的用戶端裝有資源包時系統是否能運作!
- 前往目錄
(yourServer)/plugins/ModelEngine/resource pack,使用該資料來建立一個資源包,或將其中的assets資料夾加入到你的資源包的assets中 - 將你的資源包散布給你的玩家。只有裝有資源包的玩家才能看到自訂模型,對其他所有人而言它看起來會非常怪異且破碎。如果你打算大量使用這些模型,你可能會想強制使用資源包。
- (選用)若要讓玩家在登入時下載資源包,你需要將檔案託管在某個網路位置,並更改 server.properties 的
resource-pack=欄位以指向該位址。* - (選用)如果你會修改資源包,你會想使用
resource-pack-sha1=選項,這樣伺服器就能檢查玩家的資源包是否需要更新。要產生此值,請將你的資源包上傳到 http://onlinemd5.com/ 並確保你選擇 SHA1 選項。每次你更新資源包時都必須這麼做,否則你的使用者就不會收到更新。* - (選用)若要強制玩家使用資源包,請在 server.properties 中使用
require-resource-pack=true選項。*
- (選用)若要讓玩家在登入時下載資源包,你需要將檔案託管在某個網路位置,並更改 server.properties 的
如果你修改了 server.properties,你需要重新啟動!
* 注意:如果這些說明對你沒有幫助,網路上有許多指南可以協助你讓這部分運作。
合併資源包
如果你需要合併你的資源包,你可以手動進行。但我們建議使用如 merge.elmakers 之類的線上工具來合併你的資源包。
步驟 4. 祈禱它能運作
假設一切都正確完成,你現在應該能在你的 Boss 或 NPC 上看到自訂模型。你可以透過以下指令生成它們:
- 自訂 Boss:
/em spawn boss filename.yml - NPC:
/em place npc filename.yml
接著你可以透過指令 /em remove 來移除它們。
為 EliteMobs 建立與調整自訂模型
EliteMobs 能夠使用任何被 Model Engine 視為有效的模型,這表示沒有什麼是它做不到的。
然而,在動畫方面,需要為動畫使用特定的名稱,以確保 Boss 能夠使用這些動畫。
這些動畫名稱就是在 Blockbench 的動畫分頁中所設定的名稱。你可以隨時重新命名它們,這表示你可以改造任何既有的模型來與 EliteMobs 搭配運作。
動畫
請注意,由於這個系統還非常新,本章節仍在持續擴充。隨著功能請求陸續湧入,會有更多內容加入其中。
idle
idle 是不在戰鬥中且不移動的實體所使用的動畫名稱。EliteMobs 會以 idle 狀態初始化模型,但不會覆寫 ModelEngine 內建的 idle 動畫系統。模型會透過 ModelEngine/FMM 的預設行為自動使用此動畫。
walk
walk 是正在移動的實體所使用的動畫名稱。EliteMobs 會以 walk 狀態初始化模型,但不會覆寫 ModelEngine 內建的 walk 動畫系統。模型會透過 ModelEngine/FMM 的預設行為自動使用此動畫。
attack
攻擊動畫有三種類型:
attack
attack 是 Boss 攻擊時所使用的正確通用動畫名稱。
attack_melee
attack_melee 是當自訂 Boss 使用原版 Minecraft 近戰攻擊來攻擊實體時所使用的正確動畫名稱。會覆寫 attack。請注意,動畫會在傷害造成之後才播放。目前這很遺憾地是一項限制。因此,請盡量讓動畫非常快速。
attack_ranged
attack_ranged 是當自訂 Boss 生成投射物實體時所使用的正確動畫名稱。會覆寫 attack。請注意,動畫會在投射物發射之後才播放。目前這很遺憾地是一項限制。因此,請盡量讓動畫非常快速。
動畫後備系統
EliteMobs 對攻擊動畫使用後備系統:
- 如果未定義
attack_melee,則退回使用attack - 如果未定義
attack_ranged,則退回使用attack - 如果未定義
attack,則不播放動畫
這讓你能夠建立單一個適用於所有攻擊類型的攻擊動畫,或為近戰與遠程攻擊建立各別的專屬動畫。
damaged
damaged 動畫目前尚未實作。此功能計畫於未來版本推出。模型在受擊時不會自動播放 damaged 動畫。
death
death 是死亡動畫的正確動畫名稱。EliteMobs 不會修改 Model Engine 所使用的預設 idle 動畫系統。
powers
Power 動畫尚未實作。此功能計畫於未來版本推出。
注意:本段落仍在開發中。以下是目前計畫中的功能。
EliteMobs 中的每個 power 都可以指派一個動畫。動畫永遠在 power 觸發時開始,且目前在 power 使用的整個過程中不會提供進一步的觸發點。某些 powers,例如無敵類,不會有任何作用,因為它們沒有觸發點,且只是 Boss 的被動屬性。
要為一個 power 指派動畫,該動畫的命名必須與 elitemobs 的 power 檔案相同。
舉例來說,要為殭屍死靈之書(zombie necronomicon)power 加入動畫,該動畫應命名為 zombie_necronomicon.yml。它會在 power 觸發時立即開始播放,並在動畫結束時結束(如果未設定為循環),或在 power 完成時結束。
從地城匯入自訂模型
步驟 1. 一般匯入
匯入包含自訂模型的地城打包壓縮資料夾時,自訂模型會自動移動到 (yourServer)/plugins/ModelEngine/blueprints,而 Model Engine 會自動重新載入以產生相關的資源包與 Model Engine 檔案。
步驟 2. 資源包
EliteMobs 會在啟動時自動將其內建的資源包檔案匯出到 (yourServer)/plugins/EliteMobs/resource_pack 資料夾。此匯出使用總和檢查碼比對以避免不必要的複製,因此這些檔案只會在外掛版本變更時才更新。
你需要將這些資源包檔案與任何 Model Engine 資源包檔案合併,並將合併後的資源包散布給你的玩家。只有裝有資源包的玩家才能看到自訂模型。
疑難排解
常見問題:
-
模型不可見:
- 驗證
/meg reload顯示你的模型已載入 - 檢查資源包已安裝在用戶端上
- 確保 customModel 名稱與 .bbmodel 檔名相符(不含副檔名)
- 驗證
-
動畫未播放:
- 驗證 Blockbench 中的動畫名稱與文件中記載的名稱完全相符
- 檢查那些應該只播放一次的動畫並未設定為循環
- 使用 Model Engine 指令測試個別動畫
-
兩個外掛都已安裝:
- 如果兩者都存在,EliteMobs 會使用 FreeMinecraftModels
- 若要強制使用 ModelEngine,請解除安裝 FreeMinecraftModels