🏆 AdventureBossRank

一、简介

AdventureBossRank —— Boss击杀伤害排行系统

当 MythicMobs Boss 被击杀时,自动统计每位玩家的伤害输出,生成实时排行榜,并根据排名发放奖励。支持 BossBar 实时血条显示、ActionBar 实时 DPS 显示、周期排行榜(日/周/月/总)和 GUI 排行面板。

支持 Paper 1.21.4+ 服务器(Java 21)。

核心特性

  • 实时伤害追踪 — PDC 缓存 MythicMobs 类型检测,每次攻击实时记录
  • BossSession 会话追踪 — 每只 Boss 独立会话,精确统计每位参与者的伤害
  • BossBar 血条 — 战斗中实时显示 Boss 剩余血量
  • ActionBar DPS — 滑动窗口算法实时显示玩家 DPS
  • 周期排行榜 — 日/周/月/总,四种周期切换
  • GUI 排行面板 — 可视化排行榜界面
  • 战利品系统 — 权重随机掉落 + 排名奖励 + 默认奖励
  • 离线奖励 — 离线玩家奖励存入 DB,上线自动领取
  • 邮件发放 — 通过 AdventureMail 发送溢出物品(反射调用,无编译依赖)
  • MiniMessage 文本 — 完整 MiniMessage 支持,替代旧式颜色代码
  • PAPI 变量 — PlaceholderAPI 集成,提供排行数据变量

二、插件前置说明

  • MythicMobs — 必需(Boss 使用 PDC mythicmobs:type 检测,无编译依赖)
  • PlaceholderAPI — 可选,提供 PAPI 变量
  • AdventureMail — 可选,离线/溢出物品邮件发放

📥 安装与配置

环境要求

项目要求
服务端Paper 1.21.4+
Java21+
必需依赖MythicMobs
可选依赖PlaceholderAPI、AdventureMail

安装步骤

  1. 放入 AdventureBossRank-2.0.0.jar
  2. 确保已安装 MythicMobs
  3. 启动服务器自动生成配置
  4. 编辑 config.ymlbosses.ymlloot.yml
  5. /bossrank reload

目录结构

plugins/AdventureBossRank/
  config.yml          # 主配置(数据库、BossBar、ActionBar等)
  bosses.yml          # Boss定义(MythicMobs名称→显示名、奖励)
  loot.yml            # 战利品表定义
  messages.yml        # MiniMessage 消息模板
  data/
    adventurebossrank.db  # SQLite 数据库

⚔️ Boss战斗会话

每只 MythicMobs Boss 被攻击时,系统自动创建一个 BossSession(战斗会话):

  • 每个 Boss 实体(UUID)一个独立会话
  • 记录每位参与者的累计伤害(上限为 Boss 最大血量)
  • Boss 死亡时触发结算:生成排行榜 → 广播 → 发放奖励
  • TTL 超时清理:长时间无人攻击的会话自动回收

伤害追踪

  • 直接近战攻击:EntityDamageByEntityEvent
  • 远程攻击(弓箭、三叉戟等):追溯 getShooter()
  • 精灵宠物伤害:AdventureElf 已通过 setShooter() 归因到主人
  • PDC 缓存:首次检测后缓存 mythicmobs:type,避免重复解析

📊 排行榜系统

四种周期

周期说明重置时间
DAILY每日排行每天 00:00
WEEKLY每周排行每周一 00:00
MONTHLY每月排行每月1号 00:00
ALL总排行永不重置

GUI 排行面板

使用 /bossrank gui 打开排行面板,支持周期切换按钮。

🎁 奖励与战利品

奖励分配

  • 排名奖励 — 按伤害排名发放(第1名、第2名……),在 bosses.yml 配置
  • 默认奖励 — 未进入排名的参与者获得的保底奖励
  • 周期奖励 — 日/周/月排行结算时额外发放

战利品系统

loot.yml 定义战利品表,使用权重随机抽取:

dragon_loot:
  items:
    - item: "DIAMOND_SWORD"
      weight: 10
      name: "&c龙牙剑"
    - item: "GOLDEN_APPLE"
      weight: 30
      amount: 3
    - item: "adventureitems:dragon_scale"
      weight: 5

离线奖励

玩家不在线时,命令奖励存入数据库 pending_rewards 表,下次登录自动领取。物品奖励通过 AdventureMail 邮件发放。

📺 BossBar 与 ActionBar

BossBar 血条

战斗中自动显示 Boss 剩余血量百分比,支持自定义颜色和样式。

bossbar:
  enabled: true
  color: RED
  style: SEGMENTED_10
  range: 64

ActionBar DPS

使用滑动窗口算法计算实时 DPS,战斗中在 ActionBar 显示:

actionbar:
  enabled: true
  format: "&e⚔ DPS: &f{dps}/s &7| &e总伤害: &f{damage}"

⌨️ 命令列表

命令说明权限
/bossrank rank [boss]查看指定Boss排行bossrank.use
/bossrank gui打开排行GUI面板bossrank.use
/bossrank stats [玩家]查看个人统计bossrank.use
/bossrank history [boss]查看历史记录bossrank.history
/bossrank list列出所有Bossbossrank.admin
/bossrank status查看活跃会话bossrank.admin
/bossrank reload重载配置bossrank.admin

别名:/br/abr

⚙️ 配置文件

config.yml 主要配置

database:
  type: sqlite        # sqlite 或 mysql
  mysql:
    host: localhost
    port: 3306
    database: bossrank
    username: root
    password: ""

bossbar:
  enabled: true
  color: RED
  range: 64

actionbar:
  enabled: true

broadcast:
  delay: 3            # Boss死亡后延迟广播秒数
  range: -1           # -1 = 全服广播

bosses.yml 示例

fire_dragon:
  display-name: "&c🐉 烈焰龙王"
  top-count: 5
  rewards:
    1:
      commands:
        - "give {player} diamond 10"
      message: "&a恭喜获得第1名奖励!"
    default:
      commands:
        - "give {player} gold_ingot 3"

🔑 权限节点

权限说明默认
bossrank.use基础命令(rank/gui/stats)所有玩家
bossrank.history查看历史记录OP
bossrank.admin管理命令(reload/list/status)OP

🔗 PAPI 变量

前缀:%abr_...

变量说明
%abr_kills_total%玩家总击杀参与次数
%abr_damage_total%玩家总累计伤害
%abr_top_rank_<boss>%指定Boss最佳排名

📝 更新日志

v2.0.0 最新

  • NEW MiniMessage 文本 — 替代旧式 ChatColor,支持渐变/悬浮文本
  • NEW BossSession 追踪 — 替代扁平 ConcurrentHashMap
  • NEW BossBar 血条 — 战斗中实时显示 Boss 血量
  • NEW ActionBar DPS — 滑动窗口实时 DPS 显示
  • NEW 战利品系统 — loot.yml 权重随机掉落
  • NEW GUI 排行面板 — 可视化排行榜 + 周期切换
  • NEW PAPI 变量 — PlaceholderAPI 集成
  • NEW 周期排行榜 — 日/周/月/总四种周期
  • NEW MailHook 反射化 — 解决 NoClassDefFoundError
  • NEW PDC 缓存 — MythicMobs 类型检测缓存
  • NEW TTL 清理 — 泄漏会话自动回收
  • NEW 异步 DB 查询 — 命令查询不阻塞主线程

v1.0.0

  • NEW 初始发布 — MythicMobs Boss 伤害追踪、排行广播、排名奖励、离线领取