什麼是 LibsDisguises?
LibsDisguises 改變玩家看到的實體外觀。例如,它可以讓綿羊看起來像玩家。使用 EliteMobs 偽裝前,請安裝並啟用與伺服器相容的 LibsDisguises;支援的偽裝類型取決於該版本與 Minecraft 版本。
LibsDisguises 有免費版與付費版。安裝及其自身指令的問題請查閱 LibsDisguises 專案的支援資源;本頁介紹 EliteMobs 設定。
我要如何將實體偽裝成玩家?
若要將自訂首領(或區域型首領,甚至是 NPC!)偽裝成玩家,你只需要在首領的配置檔中加入以下這行:
disguise: player:name
舉例來說,如果你想將首領偽裝成我玩家的皮膚,那設定行看起來會像這樣:
disguise: player:magmaguy
注意: 自訂模型支援已啟用且所設定的模型存在時,該模型優先。請明確選擇需要的外觀;模型缺失或無法使用時,可能改為執行偽裝流程。
玩家偽裝的名牌可見度
玩家偽裝的名牌可見度由 config.yml 中的 EliteMobs 設定 alwaysShowEliteMobNameTags 控制。啟用後,玩家偽裝會在頭頂顯示實體的自訂名稱。
自訂首領也可以在自身設定中指定 alwaysShowName: true 來啟用顯示。正常流程在生成前預設偽裝,並遵循這兩個設定中的任意一個。備用流程會在 20 tick 後、實體仍有效時再次套用偽裝。只要全域設定已啟用、實體的自訂名稱處於可見狀態,或原實體是村民,就會顯示名稱。
NPC 管理自己的多行名稱與角色標籤,並在標籤初始化時隱藏玩家偽裝的名稱。這些標籤獨立於首領名牌設定;延遲的備用流程仍可能重新設定村民偽裝的可見度。
我要如何將實體偽裝成某個玩家皮膚,但不一定是某位玩家?
這是將實體偽裝成玩家最有彈性的方式,因為它讓管理員能夠使用線上皮膚,甚至建立自己的皮膚來偽裝首領。它的操作也稍微複雜一些。
下面的範例使用皮膚 URL。LibsDisguises 官方指令參考也介紹了 /grabskin 使用玩家名稱、UUID 或 plugins/LibsDisguises/skins/ 內 PNG 檔名的方法。此指令需要 libsdisguises.grabskin 權限。
1. 設定偽裝
至於偽裝,你會想要這樣寫:
disguise: custom:your_unique_skin_name
2. 產生偽裝資料
這是棘手的部分。你先從建立以下這個配置項目開始:
customDisguiseData: player your_unique_skin_name setskin
custom: 後的名稱是自訂偽裝的別名。資料中 player 後的名稱是玩家偽裝的名稱;兩者用途不同,不必一致。此範例為了方便使用相同文字。請選擇唯一的別名:如果 LibsDisguises 已有該別名,EliteMobs 會使用現有偽裝,不會以 customDisguiseData 取代它。
接著你需要反序列化一個玩家皮膚。對於線上公開可取得的皮膚,最簡單的做法就是使用 LibsDisguises 的指令 /grabskin。
執行 /grabskin <direct_skin_png_url>,將預留位置替換為 PNG 的直接 URL,而非包含皮膚的網頁位址。
將已安裝版本傳回的完整序列化個人資料複製到 setskin 後方。如果輸出分成多個帶編號的複製區段,請依序串接全部內容,不要遺漏字元。最終 YAML 值應保持在同一行。以下示範格式;請為你要使用的皮膚產生資料:
customDisguiseData: player your_unique_skin_name setskin {"id":"d1fbb77f-b184-4718-b0a2-c7ae866798d3","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTYyNzU0ODkwMjQ0OSwKICAicHJvZmlsZUlkIiA6ICIxOTI1MjFiNGVmZGI0MjVjODkzMWYwMmE4NDk2ZTExYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJTZXJpYWxpemFibGUiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzlmYTZkMWFlODA2YTY2OGI0OTgzYmZhY2ZkMGUzMzQ5MGE5MGU4YTZmMWE2MmEwZGQ5YzQ1YjdkYjBiNjU1MyIKICAgIH0KICB9Cn0=","signature":"P/XSvxX45MUZGc5uuDKuVgmMUk2V1HADPI84Os5J4NnmURhLeS4jL4FSeShmz0cH7sBWmMg80g9ADP33R9PcOmzbHK4hJBFt2VYLJNgSYHK6VGp6qLGXDfdAa3vRNXN7jKtsrqVEANax7Gzv3xcWARLbq1FuQ6yYdXDY8Coc02Y/POMRG/i6iACtro5DQGhr2JgbL++95UhSBFxmU82Zef3UMHLfgt7lC4vWN4c4xrOAKllzF2mwohuMmEkoKzu/6s/eu5q4J4bBH08M8UN02/yJuEH5sTy/iVJfaoPs90ZfcVdRpUZvVDZh5eXapQN1/Q9/79Pc8YOXF/20iygZ/hpvTPKP8wbMP2b1cJSyAaEIUtG9I7mG3bAXbH7mcswM1CNFF3+GEFnZI5dPxzuOelJR/t2mtVl82a4zEm9KG9Fq7iGfuK9aiWR8Yot1KeuIddPbBL8JnxHy2wW9OySjzAbs8tUI/i5KKmZmQrPH0RmHrFIuVK4C849QtRt57sQaUr1+W6Vto3r7J5jhpZ30wIIfS9hvW/ReB9rbwUQWERWie5Lchfcp7YkKbzuuaddnIjPew2IQDESlXzVW84kXtYKCs8hFgYVn27wU8jqtBCVkr0iHW7YLQTl4SFUzTFCSgAx5KSFHGm/4kqXqpHNdjS687o13MWpxrxLkV1svIp4="}],"legacy":false}
使用已安裝 LibsDisguises 版本接受的序列化皮膚個人資料。其他 LibsDisguises 工具若能產生相同的受支援偽裝資料,也可以提供這個值。
嵌入個人資料可以避免依賴某位玩家目前的皮膚。但仍需要 LibsDisguises 與有效的個人資料、材質資料,並不保證在無網路存取時也能載入材質。
我要如何將自訂首領偽裝成另一種類型的實體?
若要將自訂首領(或區域型首領)偽裝成另一種類型的實體,你只需要在首領的配置檔中加入以下這行:
disguise: ENTITY_TYPE
舉例來說,如果你想讓你的自訂首領偽裝成綿羊,你會這樣寫:
disguise: SHEEP
我要如何將自訂首領偽裝成幼年實體?
若要將自訂首領(或區域型首領)偽裝成幼年實體,你只需要在首領的配置檔中加入以下這行:
disguise: HOGLIN:baby
此範例指定幼年豬布獸。:baby 後綴適用於生物偽裝;請使用已安裝版本中支援幼年外觀的類型。
我要如何用自訂偽裝來偽裝實體?
若要使用自訂偽裝,可以先在 LibsDisguises 中建立別名,也可以在首領設定中提供 customDisguiseData,讓 EliteMobs 註冊缺少的別名。現有別名優先於內嵌資料。
完成後,正確的語法是:
disguise: custom:your_custom_disguise_name
有效的偽裝
EliteMobs 使用已安裝 LibsDisguises 的 DisguiseType 列舉解析實體偽裝名稱。名稱區分大小寫,例如 SHEEP、ZOMBIE 與 SKELETON。
請查閱 DisguiseType 官方原始碼中的列舉名稱與 Minecraft 版本註記。核對舊伺服器時,請選擇與已安裝 LibsDisguises 版本對應的標籤。Bukkit 的 EntityType 清單不是可接受名稱清單,也並非每個列舉值都適用於所有伺服器版本。
例如,新版本使用依木材區分的船名,如 OAK_BOAT;舊的通用 BOAT 項目帶有移除版本註記。請選擇 Minecraft 版本與已安裝 LibsDisguises 組建均支援的項目。