- 版权类型
- 原创
- 插件中文名称
- YuVault
- 插件英文名称
- YuVault
- 原帖地址
- https://vicuna-main.github.io/YuPluginHub
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- PufferFish
- Leaves
- 其他核心
- 语言支持
- 中文(简体)
- 前置组件
- 无
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
- 1.13
- 1.12
- 1.11
- 1.10
- 1.9
- 1.8
[MD]
## 🌟 插件简介
**YuVault** 是一款专为 Minecraft Spigot/Paper 服务器设计的**虚拟保险柜**插件。
它不依赖任何物理方块,玩家可以通过指令或 GUI 随时随地打开自己的保险柜,实现物品的安全存储与跨服携带。
✨ 支持 **1.8 至 1.21+** 全版本
✨ 兼容 **SQLite / MySQL**,既可单服使用,也可跨服共享数据
✨ 内置**图形界面**、**物品回收系统**、**精细化权限控制**、**世界与物品黑/白名单**
✨ 高并发场景下依然稳定流畅
📚 插件 Wiki / 使用文档: [插件文档](https://vicuna-main.github.io/YuPluginHub)
---
## 🚀 核心特性一览
### 📦 虚拟保险柜
- 无需放置任何方块,输入指令即可打开个人保险柜
- 每位玩家可拥有**多个**保险柜,数量上限通过权限控制
- 每个保险柜的槽位数(9/18/27/36/45/54)可**按编号单独设定**
### 🌐 跨服数据同步
- 支持 **MySQL** 存储,同一玩家在不同子服打开同一份保险柜数据
- 使用高性能 **HikariCP 连接池**,保证多服并发时的低延迟与稳定
### 🛡️ 物品回收保护
- 当管理员缩小保险柜容量时,**超出部分的物品不会消失**
- 物品自动进入**回收箱**,玩家可用 `/yvault reclaimed` 界面随时取回
- 支持**过期自动清理**(可配置),管理员也能提取他人回收物品
### 🎮 丰富易用的 GUI
- `/yvault gui` 打开可视化保险柜列表,图标动态显示物品数量
- 翻页导航、关闭按钮、返回主菜单(可配置)
- 回收物品界面同样使用分页 GUI,展示物品预览和存储时间
### 🔐 精细化权限与安全
- 每个保险柜**同时只能被一人打开**(防止并发涂改)
- 管理员可强制打开他人保险柜(需要 `yuvault.admin`)
- 支持世界黑/白名单,禁止在特定世界打开保险柜
- 支持物品黑/白名单,禁止存放特定物品(如基岩、屏障、命令方块)
### ⚙️ 高度可配置
- 所有文本均可通过 `messages.yml` 自定义(支持颜色代码)
- 命令别名可动态调整,无需修改 plugin.yml
- 自动保存间隔、回收保留天数等细节均可配置
---
## 📥 安装与前置
1. **下载插件** 并放入 `plugins/` 目录。
2. 重启服务器或使用插件管理工具加载。
3. 插件会自动生成默认配置文件:
- `config.yml` – 主配置
- `messages.yml` – 语言文件
4. 如需跨服,将 `storage.type` 改为 `mysql` 并填写数据库信息。
5. 可选:安装 **YuPlugins 前置**?本插件无强制前置依赖,所需库(如 HikariCP、JDBC)会在启动时自动下载。
> ⚠️ **Java 9+ 运行环境注意**
> 如果你的服务器使用 **Java 9 或更高版本**,插件在加载依赖库时需要进行反射操作,可能会遇到 `InaccessibleObjectException`。
> 请在服务器启动脚本(.bat / .sh / 面板启动参数)中添加以下 JVM 参数:
> ```
> --add-opens java.base/java.net=ALL-UNNAMED
> ```
> 该参数用于解除模块系统的封装限制,保证插件正常运行,且不会产生安全风险。
---
## 🧩 配置详解(config.yml)
```yaml
# 存储类型与连接池
storage:
type: sqlite # sqlite / mysql
pool:
enabled: true
max-pool-size: 10
mysql:
host: localhost
port: 3306
database: yuvault
username: root
password: ""
# 默认保险柜参数
default-slots: 9 # 默认槽位数(9 的倍数)
slot-mode: permission # 槽位管理模式:permission 或 command
default-vaults: 1 # 玩家默认拥有的保险柜数量
# 世界控制(blacklist / whitelist)
world-control:
mode: blacklist
list:
- example_nether
- example_the_end
# 物品控制(blacklist / whitelist)
item-control:
mode: blacklist
list:
- BEDROCK
- BARRIER
- COMMAND_BLOCK # 支持通配符,如 ENCHANTED_*、*_HELMET
# 保险柜列表 GUI
list-gui:
rows: 6
items-per-page: 45
vault-icon:
material: CHEST
name: "&6保险柜 &e#{id}"
lore:
- "&7已存放物品:&f{count}件"
# 导航按钮位置、材质均可自定义
# 回收物品界面
reclaimed-gui:
rows: 6
item-icon:
name: "&6{name}"
lore:
- "&7回收时间: {time}"
# 回收物品过期清理
reclaimed-items:
expire-days: 0 # 0 为永久保留
clean-interval-minutes: 60
# 自动保存间隔(秒)
auto-save-interval: 60
# 调试模式
debug: false
```
> 修改配置后可使用 `/yvault reload` 实时重载(不影响数据库连接和 GUI)。
---
## 🔖 命令与权限
### 📌 玩家命令
| 命令 | 描述 | 权限 |
|------|------|------|
| `/yvault open` | 打开自己的 1 号保险柜 | `yuvault.use` |
| `/yvault open <编号>` | 打开自己的指定保险柜 | `yuvault.use` |
| `/yvault open <玩家> <编号>` | 管理员打开他人保险柜 | `yuvault.admin` |
| `/yvault list` | 查看自己的保险柜列表(文字) | `yuvault.use` |
| `/yvault gui` | 打开可视化保险柜列表 | `yuvault.use` |
| `/yvault reclaimed` | 打开自己的回收箱界面 | `yuvault.reclaimed` |
### 👑 管理员命令
| 命令 | 描述 | 权限 |
|------|------|------|
| `/yvault create [玩家] [编号] [行数]` | 创建保险柜 | `yuvault.admin` |
| `/yvault setslots <玩家> <编号> <行数>` | 调整保险柜容量 | `yuvault.admin` |
| `/yvault adminreclaimed <玩家>` | 查看并提取他人回收物品 | `yuvault.admin` 或 `yuvault.adminreclaimed` |
| `/yvault reload` | 重载插件配置 | `yuvault.reload` |
### 🎯 权限节点说明
| 权限节点 | 效果 |
|----------|------|
| `yuvault.use` | 允许使用基本保险柜功能(默认 true) |
| `yuvault.admin` | 管理员权限(操作他人保险柜、创建、设置槽位等) |
| `yuvault.vaults.<数量>` | 允许玩家拥有的保险柜数量上限 |
| `yuvault.vaults.*` | 无限个保险柜 |
| `yuvault.slots.<编号>.<行数>` | 指定编号保险柜的最大行数(如 `yuvault.slots.1.6` 为 1 号保险柜 6 行) |
| `yuvault.slots.*` | 所有保险柜均为最大 54 格 |
| `yuvault.bypass.world` | 无视世界黑/白名单限制 |
| `yuvault.bypass.item` | 无视物品黑/白名单限制 |
| `yuvault.reclaimed` | 允许使用 /yvault reclaimed 取回物品 |
| `yuvault.adminreclaimed` | 允许查看和管理他人回收物品 |
| `yuvault.reload` | 允许重载插件配置 |
> 槽位管理模式说明:
> - `permission`(默认):实际可用槽位 = min(管理员通过 setslots 设定的行数,权限允许的行数)
> - `command`:忽略权限节点,完全由 `/setslots` 设定的行数决定(未设定时使用 default-slots)
---
## 🎓 操作指南
### 🧑🤝🧑 玩家篇
1. **打开保险柜**
输入 `/yvault open` 即可打开自己的第一个保险柜。
若有多个,可以使用 `/yvault open 2` 打开第二个。
也可以使用 `/yvault gui` 打开图形列表,点击图标进入。
2. **存放物品**
打开 GUI 后,像普通箱子一样拖拽物品即可,插件会实时保存。
3. **取回回收物品**
当保险柜容量被管理员调小后,可能有一部分物品被移入回收箱。
输入 `/yvault reclaimed` 打开界面,点击物品即可取回。若背包满,物品会掉落在脚边。
4. **查看帮助**
`/yvault help`
### 🛠️ 管理员篇
1. **为玩家创建保险柜**
`/yvault create Steve 1 4`
为玩家 Steve 创建 1 号保险柜(4 行 = 36 格)。若编号不指定,则自动分配。
2. **调整保险柜容量**
`/yvault setslots Steve 1 2`
将 Steve 的 1 号柜缩小为 2 行(18格)。超出物品会自动进入回收箱,不影响玩家利益。
3. **查看玩家保险柜列表**
`/yvault list Steve` 或 `/yvault gui Steve`
4. **紧急打开他人保险柜**
`/yvault open Steve 1`
注意:系统会先检查是否正在被其他人打开,避免冲突。管理员拥有强制关闭并打开的权利。
5. **处理回收物品**
若玩家长期未上线,管理员可通过 `/yvault adminreclaimed Steve` 查看并帮其提取,或清理过期物品。
6. **跨服注意事项**
请确保所有服务器连接同一个 MySQL 数据库,且配置文件中的 `storage.type` 设为 `mysql` 并填写正确信息。
保险柜数据实时共享,但请注意**同一保险柜同时只能被一人打开**,跨服互斥。
---
## ❓ 常见问题
**Q:为什么我修改了 config.yml 后没有生效?**
A:除了重载命令 `/yvault reload`,部分数据库相关修改需要重启服务器。建议优先使用重载,若无效再重启。
**Q:玩家保险柜数据丢失怎么办?**
A:插件在关闭 GUI 或服务器停止时会自动保存,同时有定时自动保存机制。如果遇到严重故障,可检查 `vaults.db` 或 MySQL 中是否有数据。
**Q:如何让 VIP 玩家拥有更多保险柜?**
A:使用权限插件给对应玩家添加权限,例如:
- `yuvault.vaults.5` 允许 5 个保险柜
- `yuvault.slots.1.6` 允许 1 号保险柜 6 行
**Q:回收物品一直不取会占用数据库吗?**
A:可以设置 `reclaimed-items.expire-days` 为 30 并配置清理间隔,超时物品会被自动删除。
---
## 📈 性能与优化建议
- 默认连接池大小 10 可满足大多数服用,若玩家超过 200 人,可适当调高 `max-pool-size`。
- `auto-save-interval` 建议 60~300 秒,过于频繁会增加数据库写入压力。
- 定期检查数据库体积,当 `reclaimed_items` 表长期不清理可能变大。
---
## 🤝 支持与更新
- QQ交流群:**1011284597**
- 反馈 Bug 或提建议请至官方渠道。
> 你的支持是我们持续更新的动力,如果觉得插件好用,欢迎在相关平台留下好评!
---
**YuVault — 让保险柜跨越服务器,让物品管理更简单。**
[/MD]