配置说明
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 进行匹配。
玩家关闭背包时,如果宠物正在显示,插件会重新检查槽位:
- 槽位中已不存在可匹配的宠物时,隐藏当前宠物。
- 槽位中的道具匹配了另一份宠物配置时,切换为新的宠物。
支持的槽位格式如下:
| 类型 | 配置格式 | 参数说明 |
|---|---|---|
| DragonCore | DragonCore#槽位名 | 读取龙核缓存槽位中的物品 |
| GermPlugin | GermPlugin#槽位名 | 按槽位标识读取萌芽槽位物品 |
| Minecraft | Minecraft#槽位ID | 读取玩家原版背包槽位,默认配置为 Minecraft#8 |
| LyInventoryReload | LyInventoryReload#背包#类型 | 读取离渊背包重置版中的物品 |
| LyInventory | LyInventory#背包#类型 | 代码仍保留旧版 LyInventory 槽位读取支持 |
| MXSAttributeInventory | MXSAttributeInventory#背包#格子ID | 读取 MXS 属性背包槽位 |
| PXRPG | PXRPG#类型#背包ID#槽位 | 读取 PXRPG 装备容器槽位 |
| APInventory | APInventory#分页ID#槽位ID | 读取 APInventory 分页中的槽位 |
| YeeJewelry | YeeJewelry#背包ID#槽位 | 读取清守饰品背包槽位 |
槽位配置会按 # 拆分参数,必须使用对应类型要求的完整格式。槽位插件未安装、槽位不存在或参数填写错误时,无法匹配宠物。
召唤按键
yaml
show-and-hide-key: 'V'show-and-hide-key 是召唤或隐藏宠物的按键。
按下按键时:
- 当前已有宠物显示时,隐藏宠物。
- 当前没有宠物显示时,读取
plugin-slot指定的槽位。 - 槽位道具与某个宠物的
identity匹配时,召唤该宠物。 - 未匹配到宠物时,提示槽位中不存在宠物。
安装 DragonCore 后,该值会作为龙核按键注册;安装 GermPlugin 后,该值会转换为萌芽的 KeyType 注册。因此按键名称必须符合当前按键插件的格式。
| 按键来源 | 格式示例 |
|---|---|
| DragonCore | V、Z、H |
| GermPlugin | KEY_V、KEY_Z、KEY_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: 5move-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 | 字符串 | 错误时回退为 PIG | Adyeshach 实体类型名称,必须填写有效枚举名称 |
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 | 字符串 | attack | attack 表示执行玩家原版攻击;其他值按 MythicMobs 技能 ID 释放 |
attack-animation-id | 字符串 | 空 | 攻击时播放的 DragonCore 模型动作 ID;留空不播放 |
attack-animation-speed | 整数 | 0 | DragonCore 攻击动作速度参数 |
玩家攻击生物,或玩家被生物攻击时,该生物会被设置为宠物的追击目标。目标无效、切换世界或距离玩家超过 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 | 整数 | 0 | DragonCore 技能动作速度参数 |
skill-origin-loc | 布尔值 | true | MythicMobs 技能原点是否使用玩家位置 |
cd-msg.on-cd | 字符串 | 无 | 冷却中再次触发时发送的消息;留空不发送 |
cd-msg.over-cd | 字符串 | 无 | 冷却结束时发送的消息;留空不发送 |
command | 字符串列表 | 空列表 | 技能成功释放后执行的命令 |
skill-origin-loc 的位置规则:
| 值 | 技能原点 |
|---|---|
true | 宠物主人的当前位置 |
false | 宠物实体的当前位置 |
MythicMobs 技能需要以原点为目标时,可在 MythicMobs 技能配置中使用 @Origin。
技能触发事件
| 事件格式 | 触发时机 |
|---|---|
LEFT | 宠物主人左键点击空气或方块 |
RIGHT | 宠物主人右键点击空气或方块 |
TIME#几率 | 每秒进行一次随机判定,几率范围按 0 至 100 使用 |
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。
插件会执行以下匹配:
- 将宠物
show-name中的{player}替换为玩家名。 - 去除宠物名称和 DragonCore
entity字段中的颜色。 - 判断宠物显示名称是否包含
entity对应名称。 - 匹配成功后,为宠物实体绑定该 DragonCore 模型。
因此,DragonCore EntityModel.yml 节点中的 entity 名称需要出现在宠物最终显示名称中。LyPet 只使用首个成功匹配的模型节点。