玩家偽裝
FreeMinecraftModels 可以將任何線上玩家偽裝成已載入的模型。偽裝由指令、公開的 DisguiseAPI 以及每位玩家的 PlayerDisguiseEntity(負責處理被偽裝玩家的隱形與模型渲染)所驅動。
指令
| 指令 | 權限 | 說明 |
|---|---|---|
/fmm disguise <modelID> | freeminecraftmodels.disguise.self | 偽裝發送者。僅限玩家使用 |
/fmm disguise <modelID> <player> | freeminecraftmodels.disguise.others | 偽裝指定的玩家。可從主控台執行 |
/fmm undisguise | freeminecraftmodels.disguise.self | 移除發送者的偽裝。僅限玩家使用 |
/fmm undisguise <player> | freeminecraftmodels.disguise.others | 移除指定玩家的偽裝。可從主控台執行 |
/fmm disguiselist | freeminecraftmodels.disguise.others | 列出每位被偽裝的玩家及其偽裝模型 |
freeminecraftmodels.* 萬用字元會以 OP 預設值授予全部三個權限(admin、disguise.self、disguise.others)。
行為
- 偽裝已被偽裝的玩家會乾淨地取代先前的偽裝 — 不需要先取消偽裝。
- 被偽裝的玩家對其他玩家是隱形的,所以只看得到模型。被偽裝的玩家仍能正常看到自己。
- 隱形效果即使在喝牛奶、信標效果清除以及通常會剝離該效果的其他互動下也會持續存在。
- 玩家的碰撞箱不變。怪物鎖定、碰撞與 PvP 都會照常運作。
- 偽裝在伺服器重啟後不會保留。它們只在記憶體中追蹤。
- 在
/fmm reload時,所有有效的偽裝會作為外掛關閉的一部分被拆除。玩家在重新載入後需要被重新偽裝。
Bedrock 客戶端
偽裝依賴 FMM 渲染自訂模型。要讓 Bedrock 玩家看到偽裝,你必須在 config.yml 中設定 sendCustomModelsToBedrockClients: true,並擁有 Bedrock 相容的資源包流程(Floodgate + Geyser + 轉換過的資源包)。如果未設定,Bedrock 玩家會看不到模型,也看不到底層的隱形玩家 — 實際上,他們會在被偽裝玩家所站之處什麼都看不到。
DisguiseAPI
第三方外掛可以透過 com.magmaguy.freeminecraftmodels.api.DisguiseAPI 以程式化方式驅動偽裝。
import com.magmaguy.freeminecraftmodels.api.DisguiseAPI;
// 偽裝(如果模型 ID 未載入則回傳 false)
boolean ok = DisguiseAPI.disguise(player, "dragon");
// 取消偽裝(如果移除了偽裝則回傳 true)
DisguiseAPI.undisguise(player);
// 查詢
boolean isDisguised = DisguiseAPI.isDisguised(player);
String modelID = DisguiseAPI.getDisguiseModelID(player); // 未偽裝時為 null
// 所有被偽裝玩家的不可修改快照
Collection<Player> all = DisguiseAPI.getDisguisedPlayers();
該 API 是公開、重構安全的入口點。外掛應呼叫 DisguiseAPI 而非內部的 DisguiseManager。
常見使用案例
- 角色扮演與 RPG 伺服器: 將玩家偽裝成 Boss 模型用於過場動畫或任務腳本。
- 活動主持: 將主持人偽裝成巨大的自訂模型。
- 坐騎與載具: 結合
/fmm mount與/fmm disguise創造創意運輸配置。 - EliteMobs 整合: Boss 腳本可以偽裝觸發事件的玩家,產生暫時性的轉換效果。
疑難排解
我執行 /fmm disguise dragon 時沒有任何反應。
模型 ID 必須完全符合已載入的模型。請使用 /fmm admin 或 /fmm stats 驗證模型名稱。如果發送者缺少 freeminecraftmodels.disguise.others,即使模型存在,FMM 也會故意回傳一個通用的「無效實體 ID」訊息 — 這是為了避免向未授權的玩家洩漏已載入模型 ID 的清單。
我的偽裝在 /fmm reload 後消失了。
預期如此。所有偽裝都會在重新載入時被拆除。如果你需要自動重新套用偽裝,請監聽 FmmReloadedEvent。
Bedrock 玩家看不到偽裝。 請參閱上方 Bedrock 客戶端。
被偽裝的玩家仍然對其他人可見。 隱形是以封包層級的效果套用。如果其他外掛每個 tick 都強制移除隱形(某些反作弊外掛會這麼做),它可能會與 FMM 的重新套用衝突。請將 FMM 列入白名單或停用衝突的檢查。