Skip to content

坐骑 LyRide

LyRide 是一款自定义坐骑插件。玩家可通过指定槽位中的物品名称匹配坐骑,再使用萌芽引擎或龙之核心按键召唤、骑乘和收回坐骑。

插件提供陆行与飞行两种移动模式,支持八方向移动、多段跳、攀升、飞行升降、世界限高、动态移动速度、骑乘属性、循环动作和事件技能。管理员也可以通过指令让指定玩家骑乘坐骑,或模拟玩家切换骑乘状态。

插件信息

项目内容
插件名LyRide
插件版本1.0.4
作者离渊
Java 版本Java 8
支持服务端CraftBukkit v1_7_R4v1_12_R1,对应项目中的 Minecraft 1.7.101.12.2 适配
坐骑实体类型pigdragon
主命令/lyzq
数据目录plugins/LyRide/ride/

插件通过 NMS 桥接层自动选择 v1_7_R4v1_12_R1 实现。其他服务端内部版本没有对应桥接实现,启动时会被判定为不支持。

依赖与兼容

plugin.yml 中登记的软依赖如下:

插件用途
ProtocolLib监听载具方向、跳跃和下马输入,驱动坐骑移动控制
GermPlugin注册萌芽按键、读取萌芽槽位、播放玩家或坐骑模型动作
DragonCore注册龙核按键、读取龙核槽位、播放玩家或坐骑模型动作
PlaceholderAPI解析移动速度属性变量,以及事件指令中的 PAPI 变量
MythicMobs让事件配置中的 mythic-skill 由骑乘玩家释放
Vault已登记为软依赖,现有代码中未发现直接调用

按键监听会优先使用 GermPlugin;未启用萌芽时再使用 DragonCore。至少需要按实际功能安装对应的槽位、按键、变量、技能或属性插件。

骑乘属性支持以下插件标识:

attribute-plugin对接插件
AttributePlus2AttributePlus 2
AttributePlus3AttributePlus 3
SX-Attribute2SX-Attribute 2
SX-Attribute3SX-Attribute 3
空字符串不添加或移除骑乘属性

切换到 SX-Attribute2SX-Attribute3 后需要重启服务器,使对应 API 完成初始化。

坐骑识别

玩家触发召唤按键时,插件会读取 config.ymlride-slot 指定的槽位,并取得槽位物品名称。物品名称包含某个坐骑配置的 match-name 时,插件会使用该配置创建坐骑。

支持的槽位格式如下:

类型格式说明
龙之核心槽位DragonCore#槽位名读取 DragonCore 槽位
萌芽引擎槽位GermPlugin#槽位名读取 GermPlugin 槽位
梦星桐背包槽位APInventory#分页id#槽位id槽位编号范围为 053
离渊背包槽位LyInventory#背包id#类型按背包、类型读取物品
主手Origin#MainHand读取玩家主手物品
副手Origin#OffHand读取玩家副手物品
头盔Origin#Helmet读取头盔槽位
胸甲Origin#ChestPlate读取胸甲槽位
护腿Origin#Legging读取护腿槽位
靴子Origin#Boots读取靴子槽位
原版背包槽位Minecraft#槽位id槽位编号范围为 036

匹配使用的是包含判断,不要求物品名称与 match-name 完全相同。配置中的 & 颜色代码会转换为 Minecraft 颜色字符后参与匹配。

玩法机制

上下坐骑

玩家按下配置的召唤键后:

  • 当前没有骑乘时,插件读取坐骑槽位并匹配坐骑。
  • 当前已经骑乘时,再次按键会结束骑乘。
  • 玩家必须站在地面上才能创建坐骑。
  • anti-ride-world 中任意文本被当前世界名包含时,禁止创建坐骑。
  • 普通按键召唤与 /lyzq tryriding-cooldown 限制。
  • /lyzq riding 会忽略骑乘冷却,但仍会经过世界、坐骑 ID 和落地状态检查。

玩家主动离开载具、发送下马输入、退出服务器、传送或切换世界时,插件会结束骑乘并移除坐骑实体。重载插件时,所有正在骑乘的玩家也会被强制下坐骑。

陆行移动

陆行坐骑支持:

  • 使用前进、后退、左移和右移控制八方向移动。
  • 对斜向输入进行归一化,避免斜向移动速度高于直线移动。
  • jump-powerjump-tickjump-count 控制跳跃力度、持续时间与段数。
  • 使用 rise-power 检测前方障碍并执行攀升。
  • 骑乘期间免疫玩家摔落伤害。
  • 松开移动键后触发停止移动事件,再次移动时触发前进事件。

飞行移动

将坐骑配置的 fly 设为 true 后启用飞行模式:

  • 平视移动时保持当前高度。
  • 抬头时根据 up-power 的角度区间向上移动。
  • 低头时根据 down-power 的角度区间向下移动。
  • 按住空格会持续刷新上升状态,使用跳跃力度和上升配置计算垂直速度。
  • world-fly-limit 可以按完整世界名限制最高飞行 Y 坐标。
  • 飞行过程可分别触发上升、下降和平飞事件。

移动速度

每个坐骑通过 move-speed 设置基础速度。插件还可以读取 PlaceholderAPI 变量,并通过公式计算最终速度:

yaml
move-speed-attribute: ''
move-speed-attribute-max: 100
move-speed-formula: '{speed_base}*(1+({speed_attribute}*0.01))'
内容说明
{speed_base}当前坐骑配置的 move-speed
{speed_attribute}move-speed-attribute 解析出的数值,并限制在 0move-speed-attribute-max 之间

未填写 move-speed-attribute 时,属性值按 0 处理。公式为空、结果不是有效数字或结果为无穷值时,插件会回退到坐骑基础速度。

玩家开始骑乘后,插件会立即刷新速度属性,并在前 30 秒内每秒重新读取一次。玩家关闭背包时也会刷新该数值。

骑乘属性

坐骑配置中的 riding-attribute 会在开始骑乘时添加给玩家,并在结束骑乘时移除。

yaml
riding-attribute:
  - '物理伤害10'

属性文本格式由 attribute-plugin 指定的属性插件决定。未配置属性插件时,该列表不会产生属性效果。

伤害与结束条件

每个坐骑可以独立控制受伤行为:

配置项作用
ride-can-damaged是否允许坐骑实体受到伤害
ride-or-player-damaged-end-riding玩家或可受伤坐骑受到伤害时是否结束骑乘
player-attack-end-riding骑乘玩家主动造成伤害时是否结束骑乘

坐骑受到允许的伤害时会触发 damaged 事件。若坐骑不可受伤,实体伤害会被取消;此时玩家自身受伤仍可能按照结束骑乘配置处理。

坐骑动作

riding-animation 用于在骑乘期间循环播放玩家动作,自动匹配萌芽引擎或龙之核心。

yaml
riding-animation:
  - '待机动作:1500'
  - 'delay:2000'
  - '骑乘动作:1200'

支持以下格式:

格式说明
动作名播放动作;未指定时长时,循环任务默认等待 1000 毫秒
动作名:毫秒播放动作,并等待指定毫秒数后处理下一项
delay:毫秒不播放动作,仅延迟指定时间

事件技能成功触发时,骑乘循环动作会暂停 1 秒并从列表开头重新播放。事件中的 player-actionride-action 同样支持 动作名动作名:毫秒 格式。

事件技能

每个坐骑配置都可以在 event 节点下定义多组事件。每组事件可设置触发条件、触发概率、冷却、MythicMobs 技能、成功或失败消息、成功或失败指令,以及玩家和坐骑动作。

支持的触发类型如下:

trigger-type触发时机
start-riding开始骑乘
end-riding结束骑乘
fly-up飞行上升
fly-down飞行下降
fly-move飞行平移
rising陆行坐骑攀升
forward从停止状态进入移动状态
cease松开方向输入并停止移动
damaged坐骑受到未被取消的伤害
second骑乘期间每秒产生一次检测机会
right骑乘玩家右键
left骑乘玩家左键

事件冷却在概率判断前写入,因此无论本次触发成功还是失败,都会进入冷却。每次创建新的骑乘实例时,事件冷却从可触发状态开始;结束骑乘后,本次骑乘实例及其冷却记录会被移除。

事件指令支持以下执行前缀:

前缀执行身份
[console]控制台
[op]玩家临时获得 OP 后执行,完成后恢复原状态
[player]玩家自身
无前缀玩家自身

指令会先解析 PlaceholderAPI 变量,并支持 eval:{公式}ceil:{公式}floor:{公式} 数值表达式。表达式可以使用 ~ 指定数值格式,例如 eval:{1+1~%.1f}

完整事件配置请查看 事件技能

指令

所有已实现的管理指令都要求命令发送者为 OP。项目中没有声明独立权限节点。

指令说明
/lyzqOP 执行时显示插件指令帮助
/lyzq reload重载 config.ymlride/ 中的坐骑配置,重新注册按键,并强制结束现有骑乘
/lyzq riding [玩家] [坐骑id]强制指定在线玩家骑乘指定坐骑,忽略骑乘冷却
/lyzq try [玩家]模拟指定在线玩家切换骑乘状态;上坐骑时从其配置槽位匹配坐骑

[玩家] 必须是在线玩家名称,[坐骑id] 必须与某个坐骑配置中的 id 一致。

功能总览

功能说明
多来源槽位支持龙核、萌芽、梦星桐背包、离渊背包和原版装备或背包槽位
名称匹配按物品显示名称包含 match-name 的方式识别坐骑
多坐骑文件递归读取 plugins/LyRide/ride/ 下所有 .yml 文件
两种实体支持 pigdragon 自定义骑乘实体
双版本 NMS自动选择 v1_7_R4v1_12_R1 桥接实现
八向移动支持前后左右及斜向移动,并统一斜向速度
陆行能力支持多段跳、障碍攀升和空中移动衰减
飞行能力支持抬头上升、低头下降、平飞、空格上升和世界限高
动态速度使用 PAPI 数值、属性上限和自定义公式计算最终移动速度
骑乘属性对接 AttributePlus 2/3 与 SX-Attribute 2/3
循环动作骑乘期间按顺序循环播放玩家动作和延迟配置
事件系统支持骑乘、移动、飞行、伤害、点击和定时触发
技能联动成功触发时可释放 MythicMobs 技能
指令联动成功或失败时可执行控制台、临时 OP 或玩家指令
动作联动成功触发时可播放玩家动作和坐骑动作
状态清理下马、退出、传送、切换世界、重载和停服时清理骑乘状态

注意事项

  • 示例坐骑文件在每次执行重载时都会由插件资源重新保存,直接修改 ride/示例坐骑.yml 可能被覆盖。正式坐骑应使用其他文件名。
  • id 用于指令和内部索引,同一个 id 不应在多个文件中重复。
  • type 目前只接受 pigdragon,其他值无法创建坐骑实体。
  • 源配置建议使用 pig 套模型;示例文件注明 dragon 可能存在朝向问题。
  • 玩家不在地面时不会创建坐骑。
  • 禁止世界使用包含匹配,而飞行限高使用完整世界名作为配置键。
  • PlaceholderAPIMythicMobs、动作插件和属性插件只会让对应功能生效,不应填写服务器中不存在的变量、技能、动作或属性格式。
  • PlaceholderAPI 扩展标识为 lyzq,但现有扩展代码没有实现可用的 LyRide 自定义变量,不应假设存在 %lyzq_...% 变量。

页面索引

页面内容
配置说明config.yml 的属性插件、速度公式、槽位、按键、世界限制、冷却和消息
坐骑配置ride/ 文件中的实体类型、名称匹配、移动、跳跃、飞行、属性和动作
事件技能触发类型、概率、冷却、MythicMobs 技能、消息、指令和动作
常见问题坐骑无法召唤、无法移动、版本不兼容、动作或属性不生效等问题排查
更新日志文档整理记录