- 支持版本
- 1.13.X
- 1.14.X
- 1.15.X
- 1.16.X
- 1.17.X
- 1.18.X
- 1.19.X
- 1.20.X
- 1.21.X
- 26.X
1. 统计与排行榜系统
为每位玩家记录三个维度的数据,并通过排行榜展示:- 总榜:永久累计,服务器生涯数据
- 周榜:按 ISO 周(每周一 00:00 重置)
- 月榜:按自然月(每月 1 日 00:00 重置)
周期重置采用惰性机制:跨周 / 跨月时不遍历全体玩家清零,而是在该玩家下一次产生事件(击杀或掉头颅)时检测周期 ID 变化并就地重置。即便玩家长期不在线,周期切换也零开销。
2. SQLite 数据持久化
统计数据改用 SQLite 存储于 plugins/EpicBeheading/playerdata/data.db,替代旧的 statistics.yml:- WAL 模式 + synchronous=NORMAL,兼顾读写并发与写入性能
- 批量 upsert 单事务提交,数千玩家数据可在毫秒级落盘
- 内存缓存 + 脏标记异步落盘,主线程死亡事件仅更新内存,无同步磁盘 IO
- 驱动已打包进 jar(重定位为 com.epicbeheading.sqlite),无需服务器额外安装驱动,避免与其他插件冲突
3. PlaceholderAPI 变量
需安装 PlaceholderAPI。注册后支持以下变量(前缀 %epicbeheading_):个人数据
| 变量 | 含义 |
|---|---|
| %epicbeheading_kills% | 总击杀数 |
| %epicbeheading_heads% | 总获得头颅数 |
| %epicbeheading_week_kills% | 本周击杀 |
| %epicbeheading_week_heads% | 本周头颅 |
| %epicbeheading_month_kills% | 本月击杀 |
| %epicbeheading_month_heads% | 本月头颅 |
| 变量 | 含义 |
|---|---|
| %epicbeheading_kills_rank% | 总击杀排名 |
| %epicbeheading_heads_rank% | 总头颅排名 |
| %epicbeheading_week_kills_rank% | 周击杀排名 |
| %epicbeheading_week_heads_rank% | 周头颅排名 |
| %epicbeheading_month_kills_rank% | 月击杀排名 |
| %epicbeheading_month_heads_rank% | 月头颅排名 |
| 变量 | 含义 |
|---|---|
| %epicbeheading_top_kills_name_N% | 总击杀榜第 N 名玩家名 |
| %epicbeheading_top_kills_value_N% | 总击杀榜第 N 名数值 |
| %epicbeheading_top_heads_name_N% / _value_N | 总头颅榜 |
| %epicbeheading_week_top_kills_name_N% / _value_N | 周击杀榜 |
| %epicbeheading_week_top_heads_name_N% / _value_N | 周头颅榜 |
| %epicbeheading_month_top_kills_name_N% / _value_N | 月击杀榜 |
| %epicbeheading_month_top_heads_name_N% / _value_N | 月头颅榜 |
- 排行榜缓存异步刷新(默认 60 秒),PAPI 查询直接读内存,无排序与磁盘 IO,高频调用不卡顿
- 支持离线玩家查询(个人数据与排名均包含离线玩家)
4. 多语言空数据文本
排行榜空名次 / 空数值的显示文本移至 lang/*.yml 的 leaderboard 节点,支持 8 种语言:leaderboard:
empty-name: "暂无数据"
empty-value: "暂无数据"
改进
- 排行榜缓存刷新间隔可配(leaderboard.refresh-interval,默认 60 秒,异步执行)
- 统计数据异步保存间隔可配(leaderboard.stats-save-interval,默认 300 秒)
- 周 / 月周期 ID 计算支持自定义时区(leaderboard.timezone),不依赖系统默认时区
- /ebh reload 支持热重载所有排行榜配置与时区、刷新间隔、Top 数等,无需重启
- PAPI Expansion 设置 persist(),热重载后不会被注销,无需重新注册
Bug 修复
- 修复繁体中文(zh_tw)语言文件从未释放到磁盘的问题:原代码释放 zh_hant.yml,但资源文件实际名为 zh_tw.yml,导致设置 language: zh_tw 时 langConfig 为空,全部翻译走兜底。现已修正为释放 zh_tw.yml。
配置项
# 头颅掉落几率(默认 0.05 = 5%)drop-chance: 0.05
# 语言设置:zh_cn / zh_tw / en / ja / ko / de / fr / ru
language: "en"
leaderboard:
# 排行榜缓存刷新间隔(秒,异步)
refresh-interval: 60
# 默认排行榜数量(Top N)
top-size: 10
# 服务器时区(周/月周期计算用)
timezone: "Asia/Shanghai"
# 统计数据异步保存间隔(秒)
stats-save-interval: 300
# 周榜重置日(ISO 周,周一为起点)
weekly-reset-day: MONDAY
命令与权限
| 命令 | 权限 | 默认 | 说明 |
|---|---|---|---|
| /ebh reload | epicbeheading.reload | op | 重载配置与语言文件 |