AdventureChest
一、简介
AdventureChest —— 一款功能丰富的死亡保护箱插件
AdventureChest 在玩家死亡时自动生成保护箱保存物品和经验,并提供实体显示、死亡惩罚、新手保护、物品绑定、经济领取等完整系统。让您的服务器拥有灵活且人性化的死亡机制。
AdventureChest 支持 Paper / Spigot 1.21+ 服务器(Java 21),并且会第一时间支持未来版本。
AdventureChest
- 死亡箱生成 > 自动保存物品+经验+盔甲+副手,安全位置检测
- 实体显示 > MythicMobs / ArmorStand 不占方块,全息文字提示
- 死亡惩罚 > 概率丢失物品/经验,权限绕过
- 新手保护 > 首次进服定时保护,管理员命令控制
- 物品绑定 > Lore 标记绑定,防丢弃/交易,GUI 解绑
- 经济系统 > Vault + 自定义物品货币,百分比/固定/上下限
- GUI操作 > 死亡箱查看、物品领取全通过GUI交互
- 数据安全 > 数据持久化存储,重启不丢失
- 高自定义 > 全息文字、消息、惩罚规则全部可配置
二、插件前置说明
都是非必须
- Vault — 经济插件(需基础插件例如ess,cmi等)
- PlaceholderAPI — PAPI变量支持
- WorldGuard — 区域保护集成
- MythicMobs — v5.6+,实体显示模型
- Multiverse-Core — 多世界支持
- AdventureManage — 经济联动
安装教程
- 将
AdventureChest-1.2.0.jar放入plugins/ - 启动服务器,自动生成默认配置
- 编辑配置后
/ac reload热重载 - 用 LuckPerms 为玩家/组分配权限
依赖说明
| 插件 | 必需 | 说明 |
|---|---|---|
| Paper / Spigot | 必需 | 1.21+ 服务端 |
| Vault | 可选 | 经济系统支持 |
| PlaceholderAPI | 可选 | 占位符变量 |
| WorldGuard | 可选 | 区域内禁用死亡箱 |
| MythicMobs | 可选 | 自定义实体外观 (v5.6+) |
| Multiverse-Core | 可选 | GUI 显示世界别名 |
| AdventureManage | 可选 | 过滤绑定物品 |
快速上手
管理员快速配置
# 给 VIP 组基础权限
lp group vip permission set adventurechest.use true
lp group vip permission set adventurechest.tp true
lp group vip permission set adventurechest.fetch true
# 给管理员完整权限
lp group admin permission set adventurechest.admin true
# 开启死亡惩罚 (config.yml)
death-penalty:
enabled: true
item-chance: 0.5
item-percent: 0.2
玩家使用方式
- 死亡后物品自动保存到死亡箱(实体显示在死亡位置)
- 右键点击死亡箱实体 → 自动拾取所有物品
/acgui— 打开死亡箱管理界面/actp 1— 传送到第 1 个死亡箱/acfetch 1— 将第 1 个箱子传送到身边
命令列表
管理命令 /ac
| 命令 | 权限 | 说明 |
|---|---|---|
/ac help | adventurechest.admin | 显示帮助 |
/ac reload | adventurechest.reload | 重新加载配置 |
/ac version | adventurechest.admin | 查看版本信息 |
/ac debug | adventurechest.admin | 切换调试模式 |
玩家命令
| 命令 | 权限 | 说明 |
|---|---|---|
/acgui [玩家] | adventurechest.gui | 打开死亡箱 GUI |
/aclist [玩家] | adventurechest.use | 列出所有死亡箱 |
/actp [编号] [玩家] | adventurechest.tp | 传送到死亡箱 |
/acfetch [编号] [玩家] | adventurechest.fetch | 将箱子传送到身边 |
/acunlock [编号] [玩家] | adventurechest.protect | 解锁死亡箱 |
/actoggle | adventurechest.toggle | 开关死亡箱功能 |
管理员扩展
| 命令 | 权限 | 说明 |
|---|---|---|
/acprotection info [玩家] | adventurechest.admin | 查看新手保护信息 |
/acprotection add [玩家] [秒] | adventurechest.admin | 给予新手保护 |
/acprotection remove [玩家] | adventurechest.admin | 移除新手保护 |
/acgraveyard <create|delete|list|tp> | adventurechest.admin | 管理墓地 |
[玩家] 参数可选,留空表示自己。查看他人箱子需要 adventurechest.others 权限。所有子命令均支持 Tab 补全。
权限节点
基础权限
| 权限 | 默认 | 说明 |
|---|---|---|
adventurechest.use | 所有人 | 死亡时生成保护箱 |
adventurechest.protect | 所有人 | 箱子对他人锁定 |
adventurechest.gui | 所有人 | 使用 GUI |
adventurechest.preview | 所有人 | 预览箱子内容 |
adventurechest.toggle | 所有人 | 开关死亡箱功能 |
adventurechest.binding.use | 所有人 | 使用物品绑定/解绑 |
高级权限 (需手动授予)
| 权限 | 默认 | 说明 |
|---|---|---|
adventurechest.tp | 关闭 | 传送到死亡箱 |
adventurechest.fetch | 关闭 | 将箱子传送到身边 |
adventurechest.protect.bypass | OP | 可打开他人箱子 |
adventurechest.others | OP | 操作他人的死亡箱 |
adventurechest.admin | OP | 管理员权限 |
adventurechest.binding.bypass | OP | 绕过物品绑定 |
特殊权限
| 权限 | 说明 |
|---|---|
adventurechest.penalty.bypass | 绕过死亡惩罚 |
adventurechest.protection.bypass | 不获得新手保护 |
adventurechest.protection.permanent | 永久新手保护 |
GUI 界面 v1.2.0 重制
箱子列表 GUI (/acgui)
显示玩家所有死亡箱图标:位置、剩余时间、物品数量、保护状态。虚空箱子显示 ⚠ 箱子在虚空中! 警告。
箱子详情 GUI v1.2.0
27 格 GUI,灰色玻璃板背景,3 个功能按钮 + 地图信息物品:
| 槽位 | 物品 | 功能 | 说明 |
|---|---|---|---|
| Slot 4 | 地图 | 位置信息 | 坐标、世界名、死因、物品数、经验、保护状态 |
| Slot 11 | 末影珍珠/屏障 | 传送 | 传送后 5 秒无敌保护;虚空箱显示屏障 |
| Slot 13 | 漏斗 | 远程赎回 | 远程将物品放入背包,使用 Fetch 价格 |
| Slot 15 | 岩浆桶 | 丢弃箱子 | 放弃箱子和所有物品(不可逆) |
| Slot 18 | 箭 | 返回列表 | 返回箱子列表 |
虚空箱子处理 v1.2.0
- 传送禁用 — 显示屏障物品,提示无法传送
- 远程赎回可用 — 花费金币直接放入背包
- 丢弃可用 — 放弃所有物品
物品预览 GUI
只读展示箱子内的所有物品(背包、盔甲、副手、经验)。
实体显示系统 v1.1.0
ArmorStand 模式(默认)
不可见 ArmorStand 头戴箱子材质。无重力、无碰撞、装备锁定,自动向下偏移 1 格。
MythicMobs 模式
配置 mm-mob-type 为有效 MM 怪物类型。生成失败自动回退到 ArmorStand。
全息文字变量
| 变量 | 说明 |
|---|---|
{player} | 箱子主人名 |
{deathcause} | 死亡原因 |
{items} | 物品数量 |
{xp} | 经验值 |
{duration} | 剩余时间 |
{status} | 受保护/已解锁 |
{x} {y} {z} {world} | 坐标和世界 |
配置示例
# 使用 MythicMobs
mm-mob-type: "DeathChestMob"
mm-entity-scale: 1.0
# 使用默认 ArmorStand
mm-mob-type: ""
死亡惩罚系统 v1.1.0
工作流程
- 玩家死亡 → 检查是否启用惩罚
- 检查
adventurechest.penalty.bypass权限 - 按
item-chance概率触发物品惩罚 - 按
xp-chance概率触发经验惩罚 - 剩余物品和经验存入死亡箱
配置
death-penalty:
enabled: true
item-chance: 0.5 # 50% 概率
item-percent: 0.2 # 丢失 20% 物品
xp-chance: 1.0
xp-percent: 0.5
bypass-permission: "adventurechest.penalty.bypass"
被惩罚丢失的物品直接消失(不掉落在地上)。
新手保护期 v1.1.0
- 首次进服自动授予 —
Player.hasPlayedBefore() == false - 持久化 — 存储到
protections.yml,重启不丢失 - 永久保护 — 权限
adventurechest.protection.permanent - 跳过保护 — 权限
adventurechest.protection.bypass - 管理员命令 —
/acprotection add|remove|info
配置
newbie-protection:
enabled: true
duration: 3600 # 1小时, 0 = 永久
保护期内死亡不掉落物品和经验,也不生成死亡箱。
物品绑定系统 v1.1.0
绑定标记格式
&c绑定 @ → 红色绑定 (拾取后绑定, 不可GUI解绑)
&a绑定 @ → 绿色绑定 (拾取后绑定, 可花费解绑)
&c绑定 @Steve → 已绑定到 Steve
绑定行为
- 自动绑定 — 未绑定物品被玩家拾取时自动绑定
- 防丢弃 — 绑定物品无法 Q 键丢弃
- 防交易 — 非主人无法从容器获取
- GUI 解绑 —
/acbind打开解绑 GUI,花费金币/经验/物品解绑 - 免绑权限 —
adventurechest.binding.bypass
EcoEnchants 兼容 v1.1.0
检查物品 Lore 中是否包含 Soulbound 关键字。匹配物品保留在玩家身上,不放入死亡箱。
ecoenchants-compat: true
ecoenchants-keep-lore: "Soulbound"
经济系统
Vault 经济
需安装 Vault + 经济插件(如 EssentialsX),直接使用服务器经济余额。
自定义物品货币
custom-currency:
enabled: true
material: GOLD_NUGGET
name: "&6灵魂碎片"
lore:
- "&7用于操作死亡箱的特殊货币"
custom-model-data: 0
价格格式
| 格式 | 说明 | 示例 |
|---|---|---|
100 | 固定金额 | 100 金币 |
10% | 余额百分比 | 10% 余额 |
10%,min=500,max=5000 | 百分比 + 上下限 | 最少 500 最多 5000 |
插件兼容 v1.2.0
- AdventureManage — 反射调用过滤绑定物品,无编译依赖
- Multiverse-Core — GUI 世界名自动显示别名
config.yml
基础设置
| 配置项 | 类型 | 默认 | 说明 |
|---|---|---|---|
chest-duration | int | 600 | 箱子持续时间(秒),0=永不过期 |
chest-duration-pvp | int | -1 | PvP 死亡箱时间,-1=跟随全局 |
unlock-duration | int | 0 | 自动解锁时间,0=永不 |
max-chests | int | 5 | 最大箱子数量 |
max-chests-overflow | string | drop | 超限:drop/delete |
drop-on-expire | bool | true | 过期后掉落物品 |
PvP 设置
| 配置项 | 类型 | 默认 | 说明 |
|---|---|---|---|
allow-in-pvp | bool | true | PvP 死亡时生成箱子 |
no-protect-in-pvp | bool | false | PvP 箱子不受保护 |
pvp-cooldown | int | 0 | PvP 冷却时间(秒) |
实体显示
| 配置项 | 默认 | 说明 |
|---|---|---|
mm-mob-type | "" | MM 怪物类型,空=ArmorStand |
material | CHEST | 箱子方块材质 |
material-unlocked | ENDER_CHEST | 解锁后材质 |
传送设置
| 配置项 | 默认 | 说明 |
|---|---|---|
tp-warmup | 3 | 传送等待(秒),移动取消 |
allow-tp-across-worlds | true | 跨世界传送 |
max-tp-distance | 0 | 最大传送距离,0=无限 |
invulnerability-after-tp | 0 | 传送后无敌(秒) |
经济设置
| 配置项 | 默认 | 说明 |
|---|---|---|
price-spawn | 0 | 生成箱子价格 |
price-tp | 0 | 传送价格 |
price-fetch | 0 | Fetch 价格 |
音效
| 配置项 | 默认值 |
|---|---|
sound-chest-spawn | BLOCK_ENDER_CHEST_OPEN |
sound-chest-open | BLOCK_CHEST_OPEN |
sound-chest-tp | ENTITY_ENDERMAN_TELEPORT |
sound-chest-expire | BLOCK_GLASS_BREAK |
messages.yml
所有消息支持 & 颜色代码、&#ff0000 Hex 颜色和 PlaceholderAPI 变量。
常见占位符
{player} {x} {y} {z} {world} {duration} {id} {price} {count} {xp}
v1.2.0 新增消息键
| Key | 说明 |
|---|---|
gui-button-tp-void | 虚空箱子传送按钮(禁用) |
gui-button-redeem | 远程赎回按钮 |
gui-button-discard | 丢弃箱子按钮 |
redeem-success | 赎回成功 |
redeem-partial | 部分赎回(背包满) |
discard-success | 丢弃成功 |
groups.yml
为不同权限组设置不同的箱子参数。
vip:
permission: "group.vip"
priority: 10
chest-duration: 1200
max-chests: 10
price-tp: 0
price-fetch: 0
mvp:
permission: "group.mvp"
priority: 20
chest-duration: 0 # 永不过期
max-chests: 20
priority 越高优先级越高。未设置的参数继承全局 config.yml。
binding.yml
按 Lore 颜色代码定义绑定行为和解绑费用。
color-rules:
red:
color-code: "&c"
description: "永久绑定"
can-unbind-gui: false
green:
color-code: "&a"
description: "可解绑"
can-unbind-gui: true
unbind-cost-money: 5000
unbind-cost-xp: 10
unbind-cost-item: "DIAMOND"
unbind-cost-item-amount: 3
PlaceholderAPI 变量
前缀: %achest_
| 占位符 | 返回值 |
|---|---|
%achest_count% | 死亡箱总数 |
%achest_latest_world% | 最新箱子世界 |
%achest_latest_x/y/z% | 最新箱子坐标 |
%achest_latest_duration% | 最新箱子剩余时间 |
%achest_latest_items% | 最新箱子物品数 |
%achest_latest_xp% | 最新箱子经验值 |
%achest_latest_protected% | 是否受保护 |
%achest_latest_deathcause% | 最新箱子死因 |
%achest_N_world/x/y/z% | 第 N 个箱子坐标 |
%achest_N_duration/items/xp% | 第 N 个箱子信息 |
开发者 API
AdventureChestPlugin plugin = AdventureChestPlugin.getInstance();
// 获取玩家死亡箱列表
List<DeathChest> chests = plugin.getChestManager().getChestsOf(playerUUID);
// 检查新手保护
boolean isProtected = plugin.getProtectionManager().isProtected(player);
// 检查物品是否绑定
boolean isBound = plugin.getBindingManager().isBound(itemStack);
// 通过实体 UUID 获取死亡箱
DeathChest chest = plugin.getChestManager().getChestByEntity(entityUUID);
核心类
| 类 | 说明 |
|---|---|
DeathChestManager | 箱子 CRUD、查找、tick 更新 |
DeathChest | 单个箱子数据模型 |
ChestEntityDisplay | 实体显示层 |
ProtectionManager | 新手保护管理 |
BindingManager | 物品绑定系统 |
EconomyManager | 经济操作 |
GroupManager | 权限组系统 |
常见问题
Q: 死亡后没有生成箱子?
检查:① 玩家有 adventurechest.use 权限 ② 世界不在 disabled-worlds 中 ③ 不在 WorldGuard 禁用区域 ④ 新手保护未生效 ⑤ spawn-chance 为 1.0
Q: 箱子实体看不到?
检查:① ArmorStand 是否被隐藏 ② MythicMobs ID 是否正确 ③ 服务端是否支持 Equipment API
Q: 物品绑定不生效?
确认:① binding.enabled: true ② binding.yml 已配置 ③ Lore 含 "绑定 @" 格式 ④ 颜色代码匹配
Q: 新手保护和死亡惩罚冲突?
新手保护优先级最高。保护期内不掉落、不触发惩罚、不生成死亡箱。
Q: 箱子在虚空中怎么办?
v1.2.0 自动禁用传送,可远程赎回或丢弃。
Q: VIP 免费传送?
在 groups.yml 中设置 price-tp: 0 和 price-fetch: 0。
更新日志
v1.2.0 最新
- NEW GUI 重制 — 详情 GUI 3 按钮:传送+5s 保护、远程赎回、丢弃
- NEW 5 秒无敌保护 — 传送后自动伤害免疫
- NEW 远程赎回 — 无需前往,直接将物品放入背包
- NEW 虚空检测 — 自动禁用传送,允许赎回/丢弃
- NEW Multiverse-Core — GUI 世界别名显示
- NEW AdventureManage — 自动过滤绑定物品
- FIX 修复 GUI 切换 session 被误删导致物品可被拿取
v1.1.0
- NEW 实体显示系统 — ArmorStand/MythicMobs 不占方块
- NEW 死亡惩罚 — 概率物品/经验丢失
- NEW 新手保护期 — 首次进服定时保护
- NEW 物品绑定 — Lore 标记绑定,GUI 解绑
- NEW EcoEnchants 兼容 — Soulbound 物品保留
- FIX GUI 按钮防盗(Shift-Click/拖拽/数字键)
v1.0.0
- NEW 初始发布 — 死亡箱、全息文字、GUI、传送/Fetch
- NEW Vault 经济 + 自定义货币 + 权限组 + WorldGuard