- 版权类型
- 原创
- 插件中文名称
- 坐骑
- 插件英文名称
- RidePet
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- 语言支持
- 中文(简体)
- 前置组件
- SX-Attribute 2.0.2
- 适配版本(Java)
- 1.12
[MD]
> 本项目采用 [GNU GPL v3.0](LICENSE) 开源协议
## 功能特性
**坐骑管理**
- 通过坐骑蛋物品召唤 / 收回坐骑,蛋不消耗,永久保留
- 同类型同等级蛋:切换召唤 / 收回状态
- 同类型不同等级蛋:自动升级替换为高等级坐骑
- 每位玩家可拥有多个坐骑(可配置上限)
**等级系统**
- 每个坐骑类型支持多等级配置,不同等级可有不同的属性加成、移动速度、跳跃力、复活时间
**使用期限**
- 可配置坐骑蛋使用期限(如 `7d`、`3h30m`),到期后蛋无法使用
- 到期蛋自动销毁,已召唤的坐骑自动收回
- 到期坐骑可使用未过期蛋续期
**战斗系统**
- 战斗中自动收回坐骑,脱战后才能重新召唤
- 脱战冷却时间可配置
**死亡与复活**
- 坐骑死亡后进入复活倒计时,期间无法召唤
- 复活时间按等级可配置
**属性加成**
- 可选对接 SX-Attribute 插件,骑乘时提供属性加成
- 仅骑乘生效,下骑自动移除
- 属性插件优先级可配置
**安全保护**
- 危险区域(岩浆、固体方块)自动阻止召唤
- 冷却时间防止频繁操作
**数据持久化**
- 玩家坐骑数据以 YAML 格式存储,每个玩家独立文件
- 玩家退出 / 切换世界时自动收回坐骑并保存
- 定期自动保存 + 定期检查过期坐骑
**配置管理**
- 启动时自动补全缺失的配置项
- 支持运行时热重载配置文件
## 安装
1. 将 `RidePet.jar` 放入服务器的 `plugins/` 目录
2. 重启服务器(或使用插件管理器加载)
3. 插件启动后会在 `plugins/RidePet/` 下生成默认配置文件:
- `config.yml` — 主配置文件
- `pets/` — 坐骑类型配置目录
4. 根据需要编辑配置文件,使用 `/ridepet reload` 热重载
## 依赖
| 插件 | 类型 | 说明 |
|------|------|------|
| [SX-Attribute](https://www.mcbbs.net/thread-849463-1-1.html) | 可选 | 提供属性加成功能,未安装时坐骑仅无属性加成 |
## 命令
| 命令 | 说明 | 权限 |
|------|------|------|
| `/ridepet reload` | 重载配置与玩家数据 | `ridepet.admin` |
| `/ridepet give <玩家> <类型ID> [等级]` | 给予玩家坐骑蛋 | `ridepet.admin` |
| `/ridepet list` | 列出所有坐骑类型 | `ridepet.admin` |
| `/ridepet delete <类型ID>` | 删除自己的指定类型坐骑 | `ridepet.use` |
所有命令支持 Tab 补全。
## 权限
| 权限节点 | 说明 | 默认 |
|----------|------|------|
| `ridepet.use` | 允许使用坐骑 | 所有人 |
| `ridepet.admin` | 管理员权限 | OP |
## 使用方法
- **获取坐骑蛋**:管理员通过 `/ridepet give <玩家> <类型ID> [等级]` 发放。
- **操作坐骑**:手持坐骑蛋,左键空气即可召唤 / 收回坐骑。坐骑蛋不会消耗,可作为永久工具保留。
- **坐骑升级**:如果玩家已拥有类型 A 等级 1 的坐骑,使用类型 A 等级 2 的蛋时,旧坐骑会被自动收回并替换为高等级坐骑。
- **删除坐骑**:玩家可使用 `/ridepet delete <类型ID>` 删除自己拥有的指定类型坐骑。已召唤的坐骑会先被收回再删除。
### 坐骑蛋识别
坐骑蛋使用 `MONSTER_EGG` 材质,通过 Lore 中的隐藏标识(`[RidePet] 类型编号:`)识别类型。因此:
- 不要手动修改坐骑蛋的 Lore,否则可能导致无法识别
- 不同服务器之间不可直接转移坐骑蛋(除非目标服务器有相同 ID 的坐骑类型配置)
## 使用期限
在坐骑类型配置的 `options.duration` 中可设置蛋的使用期限,格式为 `数值+单位`,支持组合:
| 单位 | 含义 | 示例 |
|------|------|------|
| `d` | 天 | `7d` = 7天 |
| `h` | 小时 | `3h` = 3小时 |
| `m` | 分钟 | `30m` = 30分钟 |
组合示例:`1d12h30m` = 1天12小时30分钟
获取坐骑蛋时,蛋的 Lore 会自动写入到期时间。到期后左键使用时会自动销毁蛋并收回已召唤的坐骑。留空或不填表示无期限。
> 注意:过期只影响蛋的使用,不影响已召唤的坐骑——直到定期检查任务发现并移除过期坐骑为止。
如果坐骑已过期,使用同类型的未过期蛋可以续期——蛋的新到期时间会更新到坐骑数据中。
## 属性系统
属性仅在骑乘时生效:
1. **骑乘坐骑** → 应用属性加成到玩家
2. **下骑坐骑** → 移除属性加成
3. **收回坐骑** → 移除属性加成
4. **坐骑死亡** → 移除骑乘者属性
5. **战斗强制收回** → 移除属性加成
属性通过 SX-Attribute 的 Lore 解析机制实现。坐骑配置中的 `attributes` 字段会被解析为 SX-Attribute 属性数据。此外,插件会将马的速度同步到玩家的移动速度(取两者较高值)。
`attribute_priority` 配置项控制属性插件匹配顺序,默认 `["sx"]`,可扩展支持其他属性插件。
## 数据存储
玩家坐骑数据以 YAML 格式存储在 `plugins/RidePet/data/` 目录下,每个玩家一个文件(以 UUID 命名)。
**保存时机**:
- 每 5 分钟自动保存(异步)
- 玩家退出时自动保存并收回坐骑
- 玩家切换世界时自动收回坐骑
- 插件关闭时保存所有数据
- 重载配置时保存所有数据
**过期检查**:
- 每 10 秒检查在线玩家的坐骑是否过期
- 过期坐骑自动移除并收回
[/MD]