Skip to content

v2.2.0 - Database Statistics & PAPI | 数据统计与PAPI集成

Choose a tag to compare

@NARCSSU NARCSSU released this 01 Nov 16:32
· 11 commits to main since this release
08f7447

RandomItemPVP v2.2.0 - 数据统计与PAPI集成更新

🎉 重大更新

✨ 新增功能

🗃️ 数据库统计系统

  • 支持 SQLite 和 MySQL 双数据库
  • 记录玩家胜利、失败、击杀、死亡等完整统计
  • 自动计算 KD 比率和胜率
  • 数据持久化保存
  • 完善的连接池配置(HikariCP)

📊 PlaceholderAPI 集成

  • 17+ 个变量支持
  • 实时显示玩家统计数据
  • 支持记分板、称号、聊天等显示
  • 格式化和原始数据双版本

🏆 排行榜系统

  • 胜利排行榜 (/ripvp top wins)
  • 击杀排行榜 (/ripvp top kills)
  • KD比率排行榜 (/ripvp top kd)
  • 前10名玩家展示

📈 统计查询

  • /ripvp stats - 查看自己的统计
  • /ripvp stats <玩家名> - 查看其他玩家统计
  • 美观的统计数据展示

🔧 优化改进

🚀 性能优化

  • 修复数据库死锁问题(查询速度提升 600 倍)
  • 优化 SQLite WAL 模式,支持并发读取
  • UPSERT 操作防止数据丢失
  • 连接超时从 30 秒增加到 60 秒
  • 显式资源管理,防止内存泄露

🎮 游戏体验

  • 修复非参与玩家无法放置/破坏方块的问题
  • 空投提示优化:移除大标题,减少干扰
  • 空投消息防刷屏:每个箱子只广播一次
  • 流体清理优化,避免服务器卡顿

🐛 Bug 修复

  • 修复新玩家统计数据不记录的问题
  • 修复数据库连接超时问题
  • 修复嵌套异步调用导致的死锁
  • 修复流水未清除的问题
  • 修复 ResultSet 资源泄露风险

📝 配置更新

数据库配置示例:

database:
  type: SQLITE  # 或 MYSQL
  
  sqlite:
    file: 'plugins/RandomItemPVP/data.db'
  
  mysql:
    host: 'localhost'
    port: 3306
    database: 'randomitempvp'
    username: 'root'
    password: 'password'
    
    properties:
      useSSL: false
      autoReconnect: true
      characterEncoding: 'utf8mb4'
      serverTimezone: 'Asia/Shanghai'
    
    pool:
      maximum-pool-size: 10
      minimum-idle: 2
      connection-timeout: 30000

📦 下载说明

依赖要求

  • Minecraft: 1.21+
  • 服务端: Paper/Folia/Purpur
  • Java: 21+
  • 可选: PlaceholderAPI 2.11.5+

安装步骤

  1. 下载插件

    • 下载 RandomItemPVP-2.2.0.jar
  2. 安装依赖(可选)

    # 如果需要 PAPI 变量支持
    下载 PlaceholderAPI: https://www.spigotmc.org/resources/6245/
  3. 上传插件

    上传到 plugins/ 目录
  4. 配置数据库(可选)

    # 默认使用 SQLite,无需配置
    # 如需使用 MySQL,编辑 config.yml
  5. 重启服务器

    /stop
    启动服务器
  6. 验证安装

    /ripvp status
    /ripvp stats

🎯 PlaceholderAPI 变量

基础统计

  • %randomitempvp_wins% - 胜利次数
  • %randomitempvp_losses% - 失败次数
  • %randomitempvp_kills% - 击杀数
  • %randomitempvp_deaths% - 死亡数
  • %randomitempvp_gamesplayed% - 游戏场次

计算数据

  • %randomitempvp_kd% - KD比率(保留2位小数)
  • %randomitempvp_winrate% - 胜率(百分比)

格式化版本

  • %randomitempvp_wins_formatted% - 格式化胜利次数(1,234)
  • %randomitempvp_kills_formatted% - 格式化击杀数
  • 更多变量请查看文档

🔄 从旧版本升级

从 v2.1.0 升级

  1. 备份数据

    # 备份配置文件(如果有自定义)
    cp plugins/RandomItemPVP/config.yml config.yml.backup
  2. 替换插件

    # 删除旧版本
    rm plugins/RandomItemPVP-2.1.0.jar
    
    # 上传新版本
    上传 RandomItemPVP-2.2.0.jar
  3. 重启服务器

    /stop
    启动服务器
  4. 检查配置

    # 配置文件会自动添加新选项
    # 检查 database 部分是否正确
    cat plugins/RandomItemPVP/config.yml

⚠️ 注意:

  • 配置文件会自动保留并添加新选项
  • 旧版本没有数据库,首次启动会自动创建
  • 所有玩家统计从 0 开始

📚 文档

🐛 已知问题

  • 如果服务器启用了 spawn-protection,非参与玩家可能无法在出生点附近建筑
    • 解决方案: 在 server.properties 中设置 spawn-protection=0

💬 支持

📜 更新日志

v2.2.0 (2025-11-02)

  • ✨ 新增完整的数据库统计系统(SQLite/MySQL)
  • ✨ 新增 PlaceholderAPI 集成(17+ 变量)
  • ✨ 新增排行榜功能(胜利/击杀/KD)
  • 🔧 优化数据库性能(修复死锁问题)
  • 🔧 优化空投提示体验
  • 🐛 修复多个游戏机制 Bug
  • 🐛 修复非参与玩家建筑限制问题

v2.1.0 (2024-XX-XX)

  • ✨ 新增空投系统
  • ✨ 新增击杀奖励
  • ✨ 新增连杀系统
  • 更多功能...

感谢使用 RandomItemPVP! 🎮

如有问题或建议,欢迎提交 Issue 或 PR!