Skip to content

配置说明

LyPet 的全局配置位于 plugins/LyPet/config.yml,宠物配置位于 plugins/LyPet/pet/ 目录。插件重载时会递归读取 pet/ 目录中的所有 .yml 文件。

配置文件

文件 / 目录用途
config.yml配置宠物识别槽位、召唤按键、技能按键和移动参数
pet/*.yml定义宠物身份、实体、跟随、攻击、交互和技能
pet/示例宠物.yml插件提供的宠物配置示例;文件已存在时不会覆盖

修改配置后,可使用 /lycw reload 重新读取 config.yml、重新注册按键并加载全部宠物配置。

全局配置

默认配置如下:

yaml
plugin-slot: 'Minecraft#8'

show-and-hide-key: 'V'

register-keys:
  - 'Z'

move-update-tick: 5

宠物识别槽位

yaml
plugin-slot: 'Minecraft#8'

plugin-slot 指定用于识别宠物道具的槽位。玩家召唤宠物时,插件会读取该槽位内道具的显示名称,并与宠物配置中的 identity 进行匹配。

玩家关闭背包时,如果宠物正在显示,插件会重新检查槽位:

  • 槽位中已不存在可匹配的宠物时,隐藏当前宠物。
  • 槽位中的道具匹配了另一份宠物配置时,切换为新的宠物。

支持的槽位格式如下:

类型配置格式参数说明
DragonCoreDragonCore#槽位名读取龙核缓存槽位中的物品
GermPluginGermPlugin#槽位名按槽位标识读取萌芽槽位物品
MinecraftMinecraft#槽位ID读取玩家原版背包槽位,默认配置为 Minecraft#8
LyInventoryReloadLyInventoryReload#背包#类型读取离渊背包重置版中的物品
LyInventoryLyInventory#背包#类型代码仍保留旧版 LyInventory 槽位读取支持
MXSAttributeInventoryMXSAttributeInventory#背包#格子ID读取 MXS 属性背包槽位
PXRPGPXRPG#类型#背包ID#槽位读取 PXRPG 装备容器槽位
APInventoryAPInventory#分页ID#槽位ID读取 APInventory 分页中的槽位
YeeJewelryYeeJewelry#背包ID#槽位读取清守饰品背包槽位

槽位配置会按 # 拆分参数,必须使用对应类型要求的完整格式。槽位插件未安装、槽位不存在或参数填写错误时,无法匹配宠物。

召唤按键

yaml
show-and-hide-key: 'V'

show-and-hide-key 是召唤或隐藏宠物的按键。

按下按键时:

  1. 当前已有宠物显示时,隐藏宠物。
  2. 当前没有宠物显示时,读取 plugin-slot 指定的槽位。
  3. 槽位道具与某个宠物的 identity 匹配时,召唤该宠物。
  4. 未匹配到宠物时,提示槽位中不存在宠物。

安装 DragonCore 后,该值会作为龙核按键注册;安装 GermPlugin 后,该值会转换为萌芽的 KeyType 注册。因此按键名称必须符合当前按键插件的格式。

按键来源格式示例
DragonCoreVZH
GermPluginKEY_VKEY_ZKEY_H

同一份配置不会自动转换两种插件的按键名称。如果服务器同时安装 DragonCore 与 GermPlugin,应确保填写的名称能够被实际使用的按键系统识别。

技能按键注册

yaml
register-keys:
  - 'Z'

register-keys 是需要向 DragonCore 或 GermPlugin 注册的技能按键列表。只有完成注册的按键,才能用于宠物技能的 SLOT-DRAGON#按键SLOT-GERM#按键 事件。

重载插件时,LyPet 会先尝试卸载此前注册的按键,再按照当前列表重新注册。

yaml
register-keys:
  - 'Z'
  - 'H'

对应宠物技能事件示例:

yaml
skill:
  dragon-skill:
    event: 'SLOT-DRAGON#H'

  germ-skill:
    event: 'SLOT-GERM#KEY_H'

移动更新参数

yaml
move-update-tick: 5

move-update-tick 用于计算宠物每次跟随移动的步长。插件会将小于 1 的值按 1 处理,并使用 1 / move-update-tick 缩放每次移动距离。

数值变化实际影响
数值减小每次移动步长增大,宠物跟随更快
数值增大每次移动步长减小,宠物跟随更慢

跟随任务本身每 tick 执行一次,因此该配置不是任务调度周期。

生成位置偏移

宠物创建时,插件还会读取以下全局配置键:

yaml
x: 0
y: 0
z: 0
配置项类型默认读取值说明
x整数0宠物相对玩家生成位置的 X 轴偏移
y整数0宠物相对玩家生成位置的 Y 轴偏移
z整数0宠物相对玩家生成位置的 Z 轴偏移

这三个配置项未写入默认 config.yml,未配置时按 0 读取。

宠物配置

每个宠物使用一份 YAML 文件。文件可以放在 pet/ 的子目录中,但宠物 id 必须在全部配置中保持唯一。

基础信息

yaml
id: 'f1'
identity: '&6宠物-猪猪'
identity-match-contains: false
show-name: '&b{player}的宠物'
entity-type: 'PIG'
配置项类型默认值说明
id字符串宠物唯一 ID;重复 ID 的配置不会被加载
identity字符串用于匹配槽位道具显示名称,支持 & 颜色代码
identity-match-contains布尔值false是否使用包含匹配;关闭时要求完整显示名称相同
show-name字符串&b{player}的宠物宠物实体显示名称,支持 & 颜色代码和 {player}
entity-type字符串错误时回退为 PIGAdyeshach 实体类型名称,必须填写有效枚举名称

identity 比较的是物品已经生成的实际显示名称。配置中的 & 会转换为 Minecraft 颜色符号后再进行比较。

identity-match-contains 的行为如下:

匹配方式
false道具显示名称必须与 identity 完全一致
true道具显示名称中包含 identity 即可

show-name 中的 {player} 会替换为宠物主人的玩家名。该名称同时用于宠物头顶显示,以及 DragonCore 实体模型的名称匹配。

entity-type 读取失败时,控制台会输出实体类型错误并回退为 PIG

跟随设置

yaml
follow-speed: 0.35
teleport-distance: 16.0
standby-distance: 1.0
配置项类型代码默认值说明
follow-speed小数0.3宠物基础跟随速度
teleport-distance小数15.0宠物与目标距离超过该值时,直接传送到目标附近
standby-distance小数1.5宠物进入该距离后停止继续跟随,也用于计算远距离传送后的站位偏移

宠物会记录玩家或攻击目标的移动路径并沿路径跟随。距离增大时,插件还会动态提高移动速度。

玩家切换世界时,原宠物实体会被删除并在玩家当前位置重新创建。宠物召唤后会等待固定的 20 tick 再开始移动,该延迟没有对应配置项。

自动攻击

yaml
auto-attack-enable: true
track-range: 16.0
attack-range: 3.0
attack-speed: 20
attack-function: 'attack'
attack-animation-id: ''
attack-animation-speed: 0
配置项类型代码默认值说明
auto-attack-enable布尔值false是否启用宠物自动追击和攻击
track-range小数10目标距离玩家超过该范围后停止追击
attack-range小数2宠物与目标距离小于该值时进入攻击状态
attack-speed整数20两次攻击之间的计数间隔,单位 tick
attack-function字符串attackattack 表示执行玩家原版攻击;其他值按 MythicMobs 技能 ID 释放
attack-animation-id字符串攻击时播放的 DragonCore 模型动作 ID;留空不播放
attack-animation-speed整数0DragonCore 攻击动作速度参数

玩家攻击生物,或玩家被生物攻击时,该生物会被设置为宠物的追击目标。目标无效、切换世界或距离玩家超过 track-range 后,宠物会放弃目标并重新跟随玩家。

建议 track-range 不要大于 teleport-distance,避免宠物追击目标时长期处于传送与寻路边界。

attack-function 不是 attack 时,插件会尝试释放同名 MythicMobs 技能。技能不存在时不会执行。

DragonCore 动作仅在服务器启用了 DragonCore 且 attack-animation-id 不为空时播放。

Shift 右键交互

yaml
shift-right-command-cooldown: 500
shift-right-command:
  - '[op]bc %player_name%是猪'
  - '[console]bc %player_name%是猪'
  - 'bc %player_name%是猪'

玩家潜行并右键自己的宠物实体时,可以执行 shift-right-command 中的命令。

配置项类型代码默认值说明
shift-right-command-cooldown整数500交互冷却,单位毫秒
shift-right-command字符串列表空列表交互成功后依次执行的命令

命令在执行前会解析 PlaceholderAPI 变量。

命令前缀执行身份
[op]临时以 OP 身份让玩家执行,完成后恢复原 OP 状态
[console]控制台执行
无前缀玩家以自身权限执行

不需要交互功能时,可以删除这两个配置项。

宠物技能

宠物技能配置在 skill 节点下。每个子节点名称都是该宠物内部的技能 ID,会用于冷却记录和消息中的 {id} 替换。

yaml
skill:
  1:
    event: 'LEFT'
    trigger-conditions:
      - '%player_level% * 2 > 10'
    cd: 5
    skills:
      - '测试技能'
    animation-id: ''
    animation-speed: 0
    skill-origin-loc: false
    cd-msg:
      on-cd: '&c你的{id}当前剩余冷却时间{time}'
      over-cd: '&a你的{id}冷却已结束'
    command:
      - '[op]tell %player_name% 你触发了{id}'
      - '[console]tell %player_name% 你触发了{id}'
      - 'tell %player_name% 你触发了{id}'

技能配置项

配置项类型代码默认值说明
event字符串技能触发事件
trigger-conditions字符串列表空列表触发条件,全部检查通过后才能释放
cd数值或表达式冷却秒数;支持 PlaceholderAPI 变量和四则运算
skills字符串列表空列表依次释放的 MythicMobs 技能 ID
animation-id字符串释放技能时播放的 DragonCore 模型动作 ID
animation-speed整数0DragonCore 技能动作速度参数
skill-origin-loc布尔值trueMythicMobs 技能原点是否使用玩家位置
cd-msg.on-cd字符串冷却中再次触发时发送的消息;留空不发送
cd-msg.over-cd字符串冷却结束时发送的消息;留空不发送
command字符串列表空列表技能成功释放后执行的命令

skill-origin-loc 的位置规则:

技能原点
true宠物主人的当前位置
false宠物实体的当前位置

MythicMobs 技能需要以原点为目标时,可在 MythicMobs 技能配置中使用 @Origin

技能触发事件

事件格式触发时机
LEFT宠物主人左键点击空气或方块
RIGHT宠物主人右键点击空气或方块
TIME#几率每秒进行一次随机判定,几率范围按 0100 使用
DAMAGED#几率宠物主人受到实体伤害时进行随机判定
ATTACK#几率宠物主人对实体造成伤害时进行随机判定
SLOT-DRAGON#按键收到指定 DragonCore 按键事件时触发
SLOT-GERM#按键收到指定 GermPlugin 按键抬起事件时触发

按键技能使用的按键必须同时加入全局 register-keys

yaml
register-keys:
  - 'H'
yaml
skill:
  dragon-key:
    event: 'SLOT-DRAGON#H'
    cd: 5
    skills:
      - '测试技能'

  germ-key:
    event: 'SLOT-GERM#KEY_H'
    cd: 5
    skills:
      - '测试技能'

触发条件

trigger-conditions 会先解析 PlaceholderAPI 变量,再进行比较。列表中的每一行都必须返回真。

支持的比较符:

运算符用途
>数值大于
>=数值大于或等于
==文本完全相等
<=数值小于或等于
<数值小于

数值两侧支持 +-*/ 和括号运算。条件内部还支持 &&||

yaml
trigger-conditions:
  - '%player_level% * 2 >= 20'
  - '%player_world% == world'
  - '%player_health% > 10 && %player_food_level% > 5'
  - '%player_level% >= 30 || %player_is_op% == yes'

&& 表示同组条件全部成立,|| 表示任意一组成立。条件格式错误或变量解析后无法进行对应运算时,可能导致技能检查失败或输出异常。

技能冷却

cd 按秒配置。插件会先解析 PlaceholderAPI 变量和四则运算表达式,再将结果换算为毫秒。

yaml
cd: 5

也可以填写表达式:

yaml
cd: '%player_level% / 10 + 2'

冷却按照“玩家 UUID + 宠物 ID + 技能 ID”分别记录。同一玩家切换宠物后,不同宠物的同名技能不会共用同一条冷却记录。

冷却消息支持以下内部占位符:

占位符说明
{id}当前技能 ID
{time}剩余冷却秒数,仅用于 on-cd
yaml
cd-msg:
  on-cd: '&c技能 {id} 还有 {time} 秒冷却'
  over-cd: '&a技能 {id} 已可以再次使用'

技能动作

yaml
animation-id: ''
animation-speed: 0

技能成功释放时,如果服务器启用了 DragonCore 且 animation-id 不为空,插件会向宠物所在世界的玩家发送模型动作。

动作配置不会代替 MythicMobs 技能。skills、动作和 command 可以在同一次技能触发中共同执行。

技能命令

yaml
command:
  - '[op]tell %player_name% 你触发了{id}'
  - '[console]tell %player_name% 你触发了{id}'
  - '[player]tell %player_name% 你触发了{id}'

技能命令会解析 PlaceholderAPI 变量,并将 {id} 替换为技能 ID。

命令前缀执行身份
[op]临时以 OP 身份让玩家执行
[console]控制台执行
[player]玩家以自身权限执行
无前缀玩家以自身权限执行

命令不要填写开头的 /

完整宠物配置

yaml
id: 'f1'
identity: '&6宠物-猪猪'
identity-match-contains: false

show-name: '&b{player}的宠物'
entity-type: 'PIG'

follow-speed: 0.35
teleport-distance: 16.0
standby-distance: 1.0

auto-attack-enable: true
track-range: 16.0
attack-range: 3.0
attack-speed: 20
attack-function: 'attack'
attack-animation-id: ''
attack-animation-speed: 0

shift-right-command-cooldown: 500
shift-right-command:
  - '[op]bc %player_name%是猪'
  - '[console]bc %player_name%是猪'
  - 'bc %player_name%是猪'

skill:
  1:
    event: 'LEFT'
    trigger-conditions:
      - '%player_level% * 2 > 10'
    cd: 5
    skills:
      - '测试技能'
    animation-id: ''
    animation-speed: 0
    skill-origin-loc: false
    cd-msg:
      on-cd: '&c你的{id}当前剩余冷却时间{time}'
      over-cd: '&a你的{id}冷却已结束'
    command:
      - '[op]tell %player_name% 你触发了{id}'
      - '[console]tell %player_name% 你触发了{id}'
      - 'tell %player_name% 你触发了{id}'

DragonCore 模型匹配

服务器安装 DragonCore 时,宠物创建后的下一 tick 会尝试读取 DragonCore 缓存中的 EntityModel.yml

插件会执行以下匹配:

  1. 将宠物 show-name 中的 {player} 替换为玩家名。
  2. 去除宠物名称和 DragonCore entity 字段中的颜色。
  3. 判断宠物显示名称是否包含 entity 对应名称。
  4. 匹配成功后,为宠物实体绑定该 DragonCore 模型。

因此,DragonCore EntityModel.yml 节点中的 entity 名称需要出现在宠物最终显示名称中。LyPet 只使用首个成功匹配的模型节点。