Skip to content

宠物 LyPet

LyPet 是一个使用 Adyeshach 创建宠物实体的 Minecraft 插件。插件会读取玩家指定槽位中的物品,根据物品显示名称匹配 pet/ 目录中的宠物配置,再召唤对应实体。

玩家可以通过按键或指令显示、隐藏宠物。宠物会沿玩家移动路径跟随主人,在距离过远、切换世界或目标位置变化时重新定位。启用战斗功能后,宠物还可以追击玩家攻击的目标或攻击玩家的生物,并执行原版攻击、MythicMobs 技能、模型动作和命令。

插件信息

项目内容
插件名LyPet
插件版本2.0.1
作者Liyuan
主命令/lycw
Java 版本Java 8
实体实现Adyeshach
配置目录plugins/LyPet/
宠物目录plugins/LyPet/pet/
已确认适配原版攻击代码直接使用 v1_12_R1 NMS 与 CraftBukkit 类,对应 Minecraft 1.12 R1

版本说明

项目中的原版攻击实现直接引用 net.minecraft.server.v1_12_R1org.bukkit.craftbukkit.v1_12_R1。当前证据只能确认 Minecraft 1.12 R1,不能据此声明支持其他服务端版本。

玩法说明

  1. 管理员通过 plugin-slot 指定宠物物品所在的背包或装备槽位。
  2. 每个宠物配置使用 identity 定义需要匹配的物品显示名称。
  3. 玩家将对应物品放入指定槽位后,通过召唤按键或 /lycw common 显示宠物。
  4. 宠物生成后会跟随玩家,并在超过传送距离时移动到目标附近的安全位置。
  5. 玩家造成伤害或受到生物攻击时,启用自动攻击的宠物会将相关生物设为追击目标。
  6. 宠物技能可以由鼠标操作、定时检测、战斗事件、DragonCore 按键或 GermPlugin 按键触发。
  7. 玩家关闭背包时,插件会重新读取槽位,并根据物品变化隐藏或切换宠物。

依赖

plugin.yml 声明了以下软依赖。虽然 Bukkit 将其标记为软依赖,但部分核心功能需要对应插件正常运行。

插件使用范围是否需要
Adyeshach创建、显示、移动、传送和交互宠物实体宠物实体功能必需
PlaceholderAPI注册 %lycw_uuid%%lycw_name%,解析技能条件、冷却表达式和执行命令中的变量使用变量及相关解析功能时需要
MythicMobs执行宠物技能和 attack-function 指定的 MythicMobs 技能使用 MythicMobs 技能时需要
DragonCore读取龙核槽位、注册按键、触发按键技能、绑定模型和播放动作使用龙核功能时需要
GermPlugin读取萌芽槽位、注册按键和触发按键技能使用萌芽功能时需要

插件还包含以下槽位接口。只有在 plugin-slot 选择对应格式时,才需要安装相应插件:

槽位来源plugin-slot 格式
Minecraft 原版背包Minecraft#槽位ID
DragonCoreDragonCore#槽位名
GermPluginGermPlugin#槽位名
LyInventoryReloadLyInventoryReload#背包#类型
LyInventoryLyInventory#背包#类型
MXSAttributeInventoryMXSAttributeInventory#背包#格子ID
PXRPGPXRPG#类型#背包ID#槽位
APInventoryAPInventory#分页ID#槽位ID
YeeJewelryYeeJewelry#背包ID#槽位

项目没有使用 MySQL 存储,也没有 LyMySQLCore 接口,因此不需要安装 LyMySQLCore。

功能

宠物识别与召唤

功能说明
指定槽位读取plugin-slot 指定的原版背包或第三方背包槽位读取物品。
显示名称匹配只处理拥有物品显示名称的物品,并使用显示名称匹配宠物。
精确匹配identity-match-contains: false 时,物品显示名称必须与 identity 完全一致。
关键词匹配identity-match-contains: true 时,物品显示名称中包含 identity 即可匹配。
按键召唤DragonCore 或 GermPlugin 启用后,可通过 show-and-hide-key 切换宠物状态。
指令召唤玩家可通过 /lycw common 执行与召唤按键相同的切换操作。
背包刷新玩家关闭背包时,插件重新检查槽位中的宠物物品。
自动切换宠物显示期间,如果槽位匹配到另一份宠物配置,插件会切换当前宠物。
自动隐藏宠物显示期间,如果槽位不再匹配任何宠物,插件会隐藏当前宠物。

跟随与移动

功能说明
路径跟随插件记录玩家或战斗目标的移动路径,宠物依次沿路径点移动。
动态加速宠物与目标距离增加时会提高移动速度,缩短追赶时间。
平滑转向宠物移动时会逐步调整身体朝向,攻击时会看向目标。
待机距离宠物进入 standby-distance 范围后停止继续靠近。
远距离传送距离超过 teleport-distance 时,宠物会传送到目标附近。
安全位置查找传送或路径修正时,会向下检查可站立方块和上方空间。
跨世界处理玩家与宠物不在同一世界时,旧实体会被删除并在玩家所在世界重新创建。
召唤移动延迟宠物召唤后会短暂延迟移动,用于减少模型刚生成时的动作卡顿。
刷新频率move-update-tick 控制每次移动更新的间隔,最小按 1 tick 处理。

自动攻击

功能说明
攻击目标记录玩家攻击生物时,该生物会成为宠物目标。
防御目标记录玩家受到生物攻击时,攻击者也会成为宠物目标。
追击范围目标无效、切换世界或离主人超过 track-range 后停止追击。
攻击距离宠物与目标距离小于 attack-range 时进入攻击状态。
攻击间隔attack-speed 使用 tick 作为单位。
原版攻击attack-function: attack 时,由宠物主人执行 Minecraft 1.12 R1 原版攻击。
技能攻击attack-function 填写其他内容时,将其作为 MythicMobs 技能 ID 执行。
攻击动作配置 attack-animation-id 后,可在攻击时播放 DragonCore 模型动作。

宠物技能

功能说明
左键与右键支持主人左键或右键时触发技能。
定时技能每秒按照配置概率检查 TIME#概率 技能。
攻击技能主人造成伤害时,按照 ATTACK#概率 检查技能。
受伤技能主人受到伤害时,按照 DAMAGED#概率 检查技能。
DragonCore 按键使用 SLOT-DRAGON#按键 监听龙核按键。
GermPlugin 按键使用 SLOT-GERM#按键 监听萌芽按键。
MythicMobs 技能组单次触发可以按顺序执行多个 MythicMobs 技能 ID。
技能中心MythicMobs 技能原点可以选择玩家位置或宠物位置。
条件判断支持 PlaceholderAPI 变量、四则运算、数值比较、文本相等比较、&& 和 `
动态冷却冷却单位为秒,可以包含 PlaceholderAPI 变量、括号和四则运算。
冷却消息支持冷却中提示和冷却结束提示,并替换 {id}{time}
技能动作技能触发时可以播放 DragonCore 模型动作。
技能命令技能触发后可以使用玩家、临时 OP 或控制台身份执行命令。

交互、模型与变量

功能说明
Shift 交互玩家潜行并与自己的宠物交互时,可以执行 shift-right-command 中的命令。
交互冷却shift-right-command-cooldown 控制交互命令的触发间隔,单位为毫秒。
DragonCore 模型绑定宠物生成后读取 DragonCore 缓存中的 EntityModel.yml,使用顶层节点的 entity 名称匹配宠物显示名称并绑定模型。
模型名称匹配模型绑定时会移除颜色后进行包含匹配,第一个匹配的节点生效。
PlaceholderAPI 变量提供当前宠物实体 UUID 和显示名称变量。
玩家资源清理玩家退出时删除宠物实体,并取消跟随、路径记录等任务。

指令

指令执行者说明
/lycwOP显示插件可用指令。非 OP 执行时不会显示帮助内容。
/lycw reloadOP重载全局配置、按键注册、宠物配置和定时技能任务。
/lycw common玩家显示或隐藏当前宠物,效果与配置的召唤按键相同。

项目没有定义 Bukkit 权限节点。管理功能直接检查执行者是否为 OP,不应配置未经项目定义的权限。

全局配置入口

全局配置文件位于 plugins/LyPet/config.yml

配置项作用
plugin-slot指定读取宠物物品的槽位来源和槽位参数。
show-and-hide-key指定 DragonCore 或 GermPlugin 的宠物显示、隐藏按键。
register-keys注册可以被宠物技能监听的 DragonCore 或 GermPlugin 按键。
move-update-tick设置宠物移动更新间隔,单位为 tick。

默认配置结构:

yaml
plugin-slot: 'Minecraft#8'
show-and-hide-key: 'V'
register-keys:
  - 'Z'
move-update-tick: 5

完整说明见:全局配置

宠物配置入口

宠物配置放在 plugins/LyPet/pet/ 下。插件会递归读取目录及其子目录中的所有 .yml 文件。

每份配置必须提供全局唯一的 id。如果多个文件使用相同 ID,后读取到的重复配置不会载入,并会在控制台输出读取失败信息。

配置分组主要配置项
基础识别ididentityidentity-match-containsshow-nameentity-type
跟随移动follow-speedteleport-distancestandby-distance
自动攻击auto-attack-enabletrack-rangeattack-rangeattack-speedattack-function
攻击动作attack-animation-idattack-animation-speed
Shift 交互shift-right-command-cooldownshift-right-command
宠物技能skill 下的事件、条件、冷却、技能、动作、原点和命令配置

宠物显示名称 show-name 支持 {player},生成实体时会替换为宠物主人的玩家名。颜色代码使用 & 编写,读取时会转换为 Minecraft 颜色符号。

完整字段见:宠物配置宠物技能

PlaceholderAPI 变量

PlaceholderAPI 启用后,插件注册变量前缀 lycw

变量返回内容
%lycw_uuid%当前宠物实体的标准化 UUID;没有宠物实体时返回空字符串。
%lycw_name%当前宠物实体的显示名称;没有宠物实体时返回空字符串。

变量详情见:插件变量

运行机制

  1. 玩家加入服务器时,插件为该玩家创建宠物缓存,初始状态为隐藏。
  2. 玩家使用召唤按键或 /lycw common 后,插件读取 plugin-slot 指定的槽位。
  3. 插件检查槽位物品是否存在显示名称,并按精确或包含方式匹配 identity
  4. 匹配成功后,插件通过 Adyeshach 创建临时公共实体,设置名称、名称可见状态和随机观察控制器。
  5. DragonCore 启用时,插件会在宠物生成后尝试根据 EntityModel.yml 绑定对应模型。
  6. 插件启动路径记录与跟随任务,使宠物沿玩家或战斗目标的移动路径前进。
  7. 玩家攻击生物或受到生物攻击时,插件记录战斗目标;启用自动攻击后,宠物会追击并攻击该目标。
  8. 技能触发前会依次检查宠物显示状态、触发条件和技能冷却,检查通过后执行动作、MythicMobs 技能与命令。
  9. 玩家关闭背包时,插件重新匹配槽位;物品移除时隐藏宠物,匹配结果变化时切换宠物配置。
  10. 玩家退出服务器时,插件删除宠物实体、取消移动任务并移除玩家缓存。

注意事项

  • entity-type 必须是 Adyeshach EntityTypes 能识别的名称。填写错误时会在控制台报错,并回退为 PIG
  • 使用 attack-function: attack 时,服务端必须与项目中的 Minecraft 1.12 R1 NMS 实现兼容。
  • attack-function 填写 MythicMobs 技能 ID,或在 skills 中配置技能时,需要安装并正常启动 MythicMobs。
  • DragonCore 与 GermPlugin 的按键格式不同。DragonCore 通常填写键盘字符,GermPlugin 使用对应的 KeyType 名称。
  • register-keys 只负责注册技能按键;召唤按键由 show-and-hide-key 单独注册。
  • SLOT-DRAGON#按键SLOT-GERM#按键 使用的按键也应出现在 register-keys 中。
  • 宠物物品必须拥有显示名称,否则不会参与 identity 匹配。
  • 技能条件只实现 >>===<=<,没有 != 运算符。
  • 交互与技能命令会先通过 PlaceholderAPI 解析,再根据命令前缀选择执行身份。
  • 插件没有 MySQL 存储功能,不需要安装 LyMySQLCore。

页面索引

页面内容
全局配置config.yml 的槽位、召唤按键、技能按键和移动刷新配置
宠物配置宠物识别、实体、跟随、自动攻击、交互和攻击动作配置
宠物技能技能事件、概率、条件、冷却、原点、动作、命令和 MythicMobs 技能配置
插件变量PlaceholderAPI 变量及返回值
常见问题依赖、版本、槽位匹配、召唤、模型、攻击和技能问题排查
更新日志文档更新记录