跳到主要内容

什么是 LibsDisguises?

LibsDisguises 改变玩家看到的实体外观。例如,它可以让绵羊看起来像玩家。使用 EliteMobs 伪装前,请安装并启用与服务器兼容的 LibsDisguises;支持的伪装类型取决于该版本和 Minecraft 版本。

LibsDisguises 有免费版和付费版。安装及其自身命令的问题请查阅 LibsDisguises 项目的支持资源;本页介绍 EliteMobs 配置。

我如何把一个实体伪装成玩家?

要把一个自定义 Boss(或区域性 Boss,甚至 NPC!)伪装成玩家,你只需在 Boss 配置文件中添加以下这一行:

disguise: player:name

例如,如果你想把一个 Boss 伪装成我玩家的皮肤,配置行会是这样的:

disguise: player:magmaguy

注意: 自定义模型支持已启用且所配置模型存在时,该模型优先。请明确选择需要的外观;模型缺失或不可用时,可能转而执行伪装流程。

玩家伪装的名牌可见性​

玩家伪装的名牌可见性由 config.yml 中的 EliteMobs 配置项 alwaysShowEliteMobNameTags 控制。启用后,玩家伪装会在头顶显示实体的自定义名称。

自定义 Boss 也可以在自身配置中设置 alwaysShowName: true 来启用显示。正常流程在生成前预设伪装,并遵循这两个设置中的任意一个。备用流程会在 20 tick 后、实体仍有效时再次应用伪装。只要全局设置已启用、实体的自定义名称处于可见状态,或原实体是村民,就会显示名称。

NPC 管理自己的多行名称和角色标签,并在标签初始化时隐藏玩家伪装的名称。这些标签独立于 Boss 名牌设置;延迟的备用流程仍可能重新设置村民伪装的可见性。

我如何把一个实体伪装成某个玩家皮肤,但不一定是某个玩家?

这是把实体伪装成玩家最灵活的方式,因为它允许管理员使用网上的皮肤,甚至创建自己的皮肤来伪装 Boss。它做起来也稍微复杂一些。

下面的示例使用皮肤 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 和有效的档案、纹理数据,并不保证在无网络访问时也能加载纹理。

我如何把一个自定义 Boss 伪装成另一种类型的实体?

要把一个自定义 Boss(或区域性 Boss)伪装成另一种类型的实体,你只需在 Boss 配置文件中添加以下这一行:

disguise: ENTITY_TYPE

例如,如果你想让你的自定义 Boss 被伪装成绵羊,你就这样写:

disguise: SHEEP

我如何把一个自定义 Boss 伪装成幼年实体?​

要把一个自定义 Boss(或区域性 Boss)伪装成幼年实体,你只需在 Boss 配置文件中添加以下这一行:

disguise: HOGLIN:baby

此示例请求幼年疣猪兽。:baby 后缀适用于生物伪装;请使用已安装版本中支持幼年外观的类型。

我如何用自定义伪装来伪装一个实体?

要使用自定义伪装,可以先在 LibsDisguises 中创建别名,也可以在 Boss 配置中提供 customDisguiseData,让 EliteMobs 注册缺失的别名。已有别名优先于内嵌数据。

完成之后,正确的语法是:

disguise: custom:your_custom_disguise_name

有效的伪装

EliteMobs 使用已安装 LibsDisguises 的 DisguiseType 枚举解析实体伪装名称。名称区分大小写,例如 SHEEP、ZOMBIE 和 SKELETON。

请查阅 DisguiseType 官方源码中的枚举名称和 Minecraft 版本注解。核对旧服务器时,请选择与你安装的 LibsDisguises 版本对应的标签。Bukkit 的 EntityType 列表不是可接受名称列表,也并非每个枚举值都适用于所有服务器版本。

例如,新版本使用按木材区分的船名,如 OAK_BOAT;旧的通用 BOAT 条目带有移除版本注解。请选择 Minecraft 版本和已安装 LibsDisguises 构建均支持的条目。