跳至主要內容

自訂模型

EliteMobs 透過 Model Engine 與 FreeMineCraftModels 支援自訂模型。

前言

從 EliteMobs 的角度來看,自訂模型系統非常簡單,因為管理員唯一要做的就是在 NPC 或自訂 Boss 設定檔中加入一行,告訴它要使用哪個自訂模型。然而,要讓這個系統完全運作,必須在 Model Engine 與 Minecraft 上採取正確的步驟,而這些就沒那麼容易上手了。

本指南會詳細說明與 Model Engine 及 Minecraft 之間的銜接部分。它不會告訴你如何使用 Blockbench 來建立自訂 Boss,也不會詳細說明 Model Engine 如何運作。關於那些,別處已經有大量的指南,如果你想進一步了解那些系統,直接查看它們的文件會更有幫助。

FreeMineCraft Models​

如果你想學習如何使用 FMM 來讓你的模型運作,那麼你可以查看這個 Wiki 頁面以了解更多。

模型名牌

目前 FreeMinecraftModels 優先使用作者設定的 tag_ 骨骼,例如 tag_head,沒有錨點時則把名牌放在模型碰撞箱上方。錨點讓作者選擇位置,但不再是顯示名稱的必要條件。FMM 負責整個名牌,包括 EliteMobs NPC 的名稱與角色行。較舊的 FMM 版本可能仍需要錨點。

基岩版(Geyser)支援​

基岩版玩家(透過 Geyser/Floodgate 連線)是否能看到自訂模型,完全取決於你的模型外掛(ModelEngine 或 FreeMinecraftModels)與你的資源包設定,而非取決於 EliteMobs。EliteMobs 確實會偵測基岩版用戶端,但它將該資訊用於選單算繪與名牌定位之類的用途 —— 它不會產生或提供另一個基岩版相容的模型。關於基岩版/Geyser 模型支援,請參閱你的模型外掛文件。

LibsDisguises 整合​

EliteMobs 也支援 LibsDisguises 作為自訂模型的替代方案。已設定且可用的模型優先於偽裝;沒有選取可用模型時,可以使用設定的偽裝。此整合會同步名稱的可見性。

若要使用 LibsDisguises,請設定 Boss/NPC 的偽裝,不指定 customModel 欄位。

物品模型與魔法武器(FMM)

使用 fmmItemModel 設定 FMM 物品外觀;作者定義的魔法武器另設 weaponType: WANDS 或 weaponType: STAVES。EliteMobs 保留名稱、說明文字、附魔與等級。FMM 提供模型,並為魔法武器提供攻擊定義。

舊的 scriptedItem 橋接仍用於作者定義物品的身分與顯示,但不再執行裝備物品的 Lua 腳本。FMM 會拒絕包含非空 scripts 清單的物品定義。不要將它與作者定義的魔法武器組合使用。

# Example EliteMobs custom item config
material: IRON_SWORD
name: "&cFlame Blade"
enchantments:
- "FIRE_ASPECT,2"
scalability: scalable
fmmItemModel: flame_blade

參照的 FMM 物品或模型必須存在。缺少外觀模型時,可能保留原版材質並輸出警告;若明確設定的 weaponType 與可用的作者定義武器不符,則會拒絕建立物品。請參閱 FMM 魔法武器與自訂物品設定。

最低需求

需要 EliteMobs、相容的 FreeMinecraftModels 版本或 ModelEngine 整合*、Blockbench** 與 Minecraft 資源包。ModelEngine 整合針對 R3 API:只有在 ModelEngine 已啟用且其版本包含 R3 時,EliteMobs 才會選用它。更新的主要版本不代表自動相容。

* 此外掛可能還有其他相依套件。請查看它們那邊的文件。
** 建立與編輯自訂模型時所需。如果你只是想安裝內容而不加以修改,則不需要。

外掛優先順序

如果同時安裝了 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 資料​

以下路徑來自已封存的 ModelEngine 匯入指南。請使用適合已安裝 ModelEngine 版本的說明。

  1. 將你的自訂模型 Blockbench 檔案(.bbmodel)放入目錄 (yourServer)/plugins/ModelEngine/blueprints。
  2. 執行適合目前 ModelEngine 版本的模型重新載入指令;封存指南使用 /meg reload models。確認模型出現在已載入的登錄表中,並檢查主控台錯誤。

步驟 3. 散布資源包​

如果你想讓你的伺服器管理下載,這可能是最棘手的部分。在研究如何自動散布資源包之前,請先檢查當你的用戶端裝有資源包時系統是否能運作!

  1. 前往目錄 (yourServer)/plugins/ModelEngine/resource pack,使用該資料來建立一個資源包,或將其中的 assets 資料夾加入到你的資源包的 assets 中
    1. 新資源包應將 assets 與有效的 pack.mcmeta 放在 ZIP 根目錄。使用相容於用戶端版本的中繼資料,不要複製封存範例中的舊格式編號。更多資訊。
    2. 如果你已經有一個資源包,請確保你沒有意外覆寫到既有的模型。更多資訊。
  2. 將你的資源包散布給你的玩家。只有裝有資源包的玩家才能看到自訂模型,對其他所有人而言它看起來會非常怪異且破碎。如果你打算大量使用這些模型,你可能會想強制使用資源包。
    1. (選用)若要讓玩家在登入時下載資源包,你需要將檔案託管在某個網路位置,並更改 server.properties 的 resource-pack= 欄位以指向該位址。*
    2. 自動下載時,將最終 ZIP 的 SHA-1 填入 resource-pack-sha1=。可在本機用 PowerShell 的 (Get-FileHash -LiteralPath "pack.zip" -Algorithm SHA1).Hash.ToLowerInvariant() 或 Linux 的 sha1sum pack.zip 計算。只複製 40 字元的雜湊值,並在 ZIP 每次變更後更新。
    3. (選用)若要強制玩家使用資源包,請在 server.properties 中使用 require-resource-pack=true 選項。*

如果你修改了 server.properties,你需要重新啟動!

* 注意:如果這些說明對你沒有幫助,網路上有許多指南可以協助你讓這部分運作。

合併資源包​

可以手動合併資源包,或使用 ResourcePackManager 管理 Nightbreak 資源包流程。merge.elmakers 等外部工具可合併 ZIP,但仍須解決模型 ID 衝突,並在目標用戶端驗證合併後的資源包。

步驟 4. 驗證模型​

模型登錄表載入完成、用戶端套用對應資源包後,在實際 Boss 或 NPC 上驗證模型。以下指令要求由玩家執行,並具有對應權限:

  • 自訂 Boss:/em spawn boss filename.yml — elitemobs.place.admin,在視線指向的位置生成。
  • NPC:/em place npc filename.yml — elitemobs.place.npc,在腳下儲存永久放置位置。

/em remove 切換移除模式。攻擊目標將其移除,再次執行指令以退出此模式。如此移除已放置的 NPC 也會刪除儲存的放置紀錄。

為 EliteMobs 建立與調整自訂模型

請使用所選提供者支援且已成功載入的模型。提供者的相容性及支援的模型功能仍有限制。

然而,在動畫方面,需要為動畫使用特定的名稱,以確保 Boss 能夠使用這些動畫。

這些動畫名稱就是在 Blockbench 的動畫分頁中所設定的名稱。你可以隨時重新命名它們,這表示你可以改造任何既有的模型來與 EliteMobs 搭配運作。

動畫​

EliteMobs 的自動鉤子使用以下動畫名稱。

idle​

idle 是慣用的待機動畫名稱。EliteMobs 將 ModelEngine 模型啟動為其預設待機狀態,後續待機與移動動畫由模型提供者選擇。

walk​

walk 是慣用的移動動畫名稱。EliteMobs 不會在附加模型時明確啟動 walk 動畫;移動動畫由 ModelEngine/FMM 選擇。

attack​

攻擊動畫有三種類型:

attack​

attack 是 Boss 攻擊時所使用的正確通用動畫名稱。

attack_melee​

attack_melee 在自訂 Boss 作為 Bukkit 實體傷害事件的直接傷害者時取代 attack。動畫在事件處理期間請求播放,不是會延遲命中的前搖。已取消事件會被忽略,但後續監聽器仍可能取消傷害。請使用較短動畫,不要依賴它排定傷害發生時間。

attack_ranged​

attack_ranged 在投射物生成事件將自訂 Boss 識別為生物射手時取代 attack。它回應投射物生成,不會讓發射等到動畫結束。沒有這種射手關聯的投射物不會觸發自動鉤子。

動畫後備系統​

EliteMobs 對攻擊動畫使用後備系統:

  • 如果未定義 attack_melee,則退回使用 attack
  • 如果未定義 attack_ranged,則退回使用 attack
  • FMM 在播放前檢查 attack 是否存在;ModelEngine 配接器將此後備名稱傳給其動畫處理器

這讓你能夠建立單一個適用於所有攻擊類型的攻擊動畫,或為近戰與遠程攻擊建立各別的專屬動畫。

damaged​

注意

EliteMobs 沒有註冊自動 damaged 動畫鉤子。提供者的受傷變色或其他命中回饋,與播放這個命名動畫是兩回事。

death​

在 EliteMobDeathEvent 中,若自訂 Boss 模型存在 death 動畫,EliteMobs 就會請求播放。移除與階段切換不等於死亡事件。動畫播放與模型清理仍取決於提供者的生命週期。

powers​

注意

技能名稱與模型動畫名稱之間沒有自動配對。

已經可以從技能中播放動畫

雖然沒有自動名稱配對,但兩個腳本系統都能明確按名稱播放動畫:

  • **EliteScript:**使用 PLAY_ANIMATION 動作,以動畫名稱為值。它將各目標解析為自訂 Boss,並在其模型上播放動畫。
  • Lua:context.boss:play_model_animation("animation_name")。

兩者都會在模型沒有該名稱的動畫,或 Boss 沒有自訂模型時略過,不輸出訊息。

從地城匯入自訂模型

步驟 1. 一般匯入​

匯入包含自訂模型的地城打包壓縮資料夾時,自訂模型會被移動到已安裝的模型外掛中:

  • 已安裝 FreeMinecraftModels —— 模型會進入 (yourServer)/plugins/FreeMinecraftModels/models(若舊的 Models 資料夾已存在則進入該處),且 .bbmodel 檔案會在匯入過程中被轉換為 .fmmodel。EliteMobs 接著會觸發一個模型安裝事件,讓 FMM 重建其模型註冊表。
  • 僅安裝 ModelEngine —— 模型進入 (yourServer)/plugins/ModelEngine/blueprints。目前共用匯入器不會自動重新載入 ModelEngine;請用適合其版本的指令重建模型與資源包。
安裝 DLC 後首次啟動

匯入啟動 FMM 模型重建後,EliteMobs 會等待 FMM 達到初始化完成狀態,最多 300 秒(五分鐘)。FMM 失敗或遭停用、等待逾時或中斷,都會在載入不完整模型與物品之前停止 EliteMobs 初始化。檢查兩個外掛的主控台錯誤,解決重建問題後再重新啟動;這不是一次只略過部分模型實體的成功啟動。

步驟 2. 資源包​

EliteMobs 啟動時將內建包匯出到 (yourServer)/plugins/EliteMobs/resource_pack/em_rsp_defaults,並在父資料夾記錄 .rsp_checksum。內建與已儲存的檢查碼一致且 em_rsp_defaults 存在時,會略過複製。變更外掛版本本身不會強制匯出;檢查碼一致也不會逐一檢查匯出檔案是否被本機修改或刪除。替換使用預先準備的目錄交換;請將自己的資源包改動保存在此產生的資料夾之外。

你需要將這些資源包檔案與任何 Model Engine 資源包檔案合併,並將合併後的資源包散布給你的玩家。只有裝有資源包的玩家才能看到自訂模型。

疑難排解

常見問題:

  1. 模型不可見:

    • 確認所選提供者的登錄表包含模型,使用適合該提供者及版本的重新載入指令
    • 檢查資源包已安裝在用戶端上
    • 確保 customModel 與登錄的模型 ID 相符,通常是不含副檔名的檔名
  2. 動畫未播放:

    • 驗證 Blockbench 中的動畫名稱與文件中記載的名稱完全相符
    • 檢查那些應該只播放一次的動畫並未設定為循環
    • 使用所選提供者的指令測試個別動畫
  3. 兩個外掛都已安裝:

    • 如果兩者都存在,EliteMobs 會使用 FreeMinecraftModels
    • 沒有按模型選擇提供者的設定。若要改用 ModelEngine,請停用 FreeMinecraftModels 並執行 R3 版本的 ModelEngine
  4. Boss 或 NPC 沒有顯示名稱(FMM):

    • 先檢查 name、Boss 的 alwaysShowName 與模型載入情況。
    • 目前 FMM 在沒有 tag_ 錨點時將名牌放在碰撞箱頂部上方。位置不對時,檢查碰撞箱高度或加入作者指定的錨點。
    • FMM 發出重新載入完成事件時會重新附加 NPC 模型。若重新載入後模型消失,請檢查主控台警告。