- 版权类型
- 原创
- 插件中文名称
- 有限死亡保护
- 插件英文名称
- TinyGrace
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- 语言支持
- 中文(简体)
- 适配版本(Java)
- 最新版本
- 26.x
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
[MD]
## 这是啥
一个**有限死亡保护**插件:每个玩家有 N 次「死亡不掉落」的机会,用完就恢复正常掉落。
适合**生存服前中期**——既不会让新人刚进服就被劝退,也不至于让「死亡」彻底失去代价。
**单 jar 支持 1.14 ~ 26.x,不需要任何前置插件。**
---
## 特点
- **配额制**:每人默认 10 次(可配),次数用完恢复正常掉落
- **完整保留**:死亡时保留背包、等级与经验
- **可按人发放**:管理员能给单个玩家加次数,做活动奖励或补偿
- **无限保护权限**:有 `tinygrace.unlimited` 的玩家永久不掉落、不扣次数
- **三级开关**:全局 / 个人 / `keepInventory` 世界豁免,互不干扰
- **两级提醒**:剩 3 次、1 次时黄色预警;配额耗尽后每次死亡红色提醒
- **数据跟人走**:存在玩家自身,**不建任何数据文件**,换服回档不丢
- **在线更新检查**:启动后异步查新版本,只提示不替换 jar
- **零依赖**:不需要 Vault / PlaceholderAPI / 任何前置
---
## 安装
1. 把 `TinyGrace-1.0.0.jar` 放进 `plugins/`
2. 重启服务器
3. 进游戏敲 `/tg info`
控制台应该出现:
[TinyGrace] TinyGrace v1.0.0 —— 有限死亡保护
[TinyGrace] 支持范围: 1.14 ~ 26.x(Java 8 字节码, api-version 1.14)
[TinyGrace] 全局开关: 开启
[TinyGrace] 基础保护: 10 次
新玩家额外: 0 次
[TinyGrace] 临界预警: [3, 1]
[TinyGrace] keepInventory 世界: 不消耗配额
---
## 指令
主命令 `/tinygrace`(别名 `/tg`、`/保护`)
| 指令 | 作用 |
| --- | --- |
| `/tg info [玩家]` | 查看剩余次数、已用次数、死亡次数 |
| `/tg on` / `/tg off` | 开关**自己**的死亡保护 |
| `/tg deaths [玩家]` | 查看累计死亡次数 |
| `/tg set <玩家> <次数>` | 设置某人的额外保护次数 |
| `/tg add <玩家> <次数>` | 增加某人的额外保护次数 |
| `/tg reset <玩家>` | 清空某人已用次数(重新发放配额) |
| `/tg global <on/off/toggle>` | 切换全局保护 |
| `/tg reload` | 重载配置 |
> `set / add / reset` **只能对在线玩家使用**——数据存在玩家身上,人不在线改不了。
---
## 权限
| 节点 | 默认 | 作用 |
| --- | --- | --- |
| `tinygrace.use` | true | 查看自己、开关自己 |
| `tinygrace.admin` | op | 查看/修改他人、全局开关、重载 |
| **`tinygrace.unlimited`** | **false** | **无限保护:死亡永不扣次数** |
### ⚠️ 关于 `tinygrace.unlimited`
这个权限**默认是关的,连 OP 也没有**(Bukkit 的规则:`default: false` 就是谁都没有)。
要给某个人,用权限插件显式授予,例如 LuckPerms:
/lp user <玩家名> permission set tinygrace.unlimited true
给了之后:他死亡永远保留背包和经验,**即使配额早就用完了**。
(死亡次数仍会统计,只是不扣配额)
---
## 配置
```yaml
enabled: true # 全局开关
protection:
base: 10 # 每人默认保护次数
default-bonus: 0 # 额外发放(可给全员补偿)
warn-at: [3, 1] # 剩余多少时黄色提醒
keep-inventory-consumes: false # keepInventory 世界是否也扣次数
keep-level: true # 是否保留等级与经验
warn-exhausted: true # 用完后每次死亡是否红色提醒
messages:
warn: "&e⚠ 你只剩 &f{0} &e次死亡保护了"
exhausted: "&c✖ 你的死亡保护次数已用完,本次死亡掉落了物品"
keep-inventory-consumes 为什么单独一个开关
有些世界本来就开了 keepInventory=true(小游戏世界、创造服)。
那种世界死亡本来就不掉东西,再扣玩家次数,玩家会觉得「我什么都没掉,凭什么扣我一次」。
所以默认 false:这类世界不消耗次数。
为什么次数用完不会「攒着」
插件在玩家身上存两个独立计数器:
数据
用途
deaths 累计死亡
只做统计
used 已消耗配额
只做判定,剩余 = base + bonus - used
如果只用一个计数器,配额用完后它还会继续涨;管理员半年后调高 base,
老玩家会凭空多出几十次保护。分开之后配额用完就固定不动。
已验证
项
结果
Paper 26.3 + Java 25
加载正常,死亡逻辑实机验证通过
1.14.4 API 编译
通过(这是最低支持版本)
字节码
Java 8
1.14 ~ 1.21 未逐版本实测,遇到问题请开 issue。
⚠️ 重要:不要和其它死亡保护类插件同装
本插件通过 PlayerDeathEvent 的 setKeepInventory(true) + getDrops().clear() 实现保留。
如果服务器上还有其它「死亡不掉落 / 死亡保险箱 / 自动拾取」类插件,可能造成物品翻倍。
原因是 Bukkit 官方文档明确写着:setKeepInventory 不会阻止物品掉落,
必须配合 getDrops().clear()。某些插件只做了前一半,就会「背包留一份 + 地上掉一份」。
装之前请先关掉其它死亡相关插件,或在小范围测试后再上线。
[/MD]