Infinity Dungeons Stats

一个用于“无限地牢”地图在Spigot服务器上的全面的统计和排行榜插件。

资源图片
# Infinity Dungeons Stats ![License](https://img.shields.io/badge/License-MIT-blue.svg) ![Minecraft Version](https://img.shields.io/badge/Minecraft-1.21+-green.svg) 一个用于**Infinity Dungeons**地图的综合统计和排行榜系统。 跟踪玩家最高分、怪物击杀数和总游戏时间,并提供游戏内的排行榜和强大的RESTful API供开发者使用。 --- 本插件旨在为您的Infinity Dungeons Roguelike服务器增添竞争优势。它添加了一个强大的统计系统,用于: * **跟踪玩家进度:** 自动记录每个玩家的最高地牢等级、总击杀数和总游戏时间。 * **促进竞争:** 使用悬浮文本(全息图)在您的世界中显示动态排行榜,展示顶级玩家。 * **吸引您的社区:** 玩家可以查看自己的统计数据或与服务器上最优秀的玩家进行比较。 * **提供开发者工具:** 内置的RESTful API允许您提取统计数据以用于网站、Discord机器人或其他自定义集成。 ## ✨ 功能 * **玩家统计跟踪:** 监控并保存每个玩家在地下城中的每次运行的关键数据。 * 达到的最高地牢等级 * 总怪物击杀数 * 总游戏时间 * **游戏内排行榜:** * 高度可配置的悬浮文本显示(全息图),用于显示顶级击杀数、游戏时间和最大等级。 * 选择单个、轮换的全息图或多个静态的全息图。 * 自定义标题、颜色和格式。 * **玩家指令:** * `/dun stats [player]` - 查看您自己的或另一位玩家的统计数据。 * `/dun killtop` - 在聊天中显示按怪物击杀数排列的前几名玩家。 * `/dun playtimetop` - 在聊天中显示按游戏时间排列的前几名玩家。 * `/dun maxleveltop` - 在聊天中显示按最大等级排列的前几名玩家。 * **RESTful API:** * 可选的内置API服务器,通过简单的HTTP请求公开玩家和服务器统计数据。(需要在服务器上打开端口)。 * **轻量级和高效:** 专为Infinity Dungeons设计,以尽可能高的性能运行。 ## ⚙️ 配置 插件可以通过`config.yml`完全配置。 您可以启用/禁用功能、设置全息图位置和自定义所有消息。 ```yaml # DungeonStats 插件配置 database: "data.yml" api-server: enabled: true port: 8080 log-checker: enabled: true interval-ticks: 100 holograms: enabled: false refresh-interval-seconds: 10 # 'SINGLE': 使用一个 text_display 实体,在不同的排行榜之间轮换。 # 'MULTIPLE': 使用一个单独的 text_display 实体来显示每个排行榜。 display-mode: 'SINGLE' single-display: location: "world,0.5,100.5,0.5" # 格式: "world_name,x,y,z" # 显示每个排行榜前切换的持续时间(以秒为单位)。 rotation-interval-seconds: 5 multiple-displays: killtop: location: "world,5.5,101.5,0.5" playtimetop: location: "world,0.5,101.5,5.5" maxleveltop: location: "world,-4.5,101.5,0.5" messages: title-kills: "&6&l--- Kills Leaderboard ---" title-playtime: "&6&l--- Playtime Leaderboard ---" title-maxlevel: "&6&l--- Max Level Leaderboard ---" # 可用的占位符:{rank}, {player_name}, {value} rank-entry: "#{rank} &b{player_name}: &f{value}" rank-color-1: "&e" # 黄金用于等级 1 rank-color-2: "&f" # 银色用于等级 2 rank-color-3: "&6" # 青铜用于等级 3 rank-color-default: "&7" # 其他等级的默认颜色 command-usage: "&cUsage: /dun " command-player-not-found: "&cCould not find data for player {player_name}" command-no-data: "&7No data available yet" stats-title: "&6--- Stats for {player_name} ---" stats-line-maxlevel: "&eHighest Dungeon Level: &f{value}" stats-line-kills: "&eTotal Kills: &f{value}" stats-line-playtime: "&eTotal Playtime: &f{value}" ``` ## 🔌 RESTful API 文档 如果 `api-server.enabled` 设置为 `true`,则该插件将在配置的端口上托管一个简单的 API 服务器。 **这会将游戏数据公开到远程服务器连接,如果您不想使其公开,则必须相应地进行防火墙设置。**
点击查看 API 端点 ### GET /players 返回在线玩家及其当前状态的列表。 **示例响应:** ```json [ { "name": "Steve3184", "status": "waiting", "health": 20.0, "armor": 0.0 }, { "name": "AdLambXD", "status": "ingame", "health": 15.0, "armor": 4.0 }, { "name": "Mark_Q", "status": "spectator", "health": 20.0, "armor": 0.0 } ] ``` ### GET /stats 返回已完成地下城运行的日志。 * **可选查询参数:** `limit` (例如,`/stats?limit=10`) - 设置返回的最大记录数。默认为 `0`(无限制)。 **示例响应:** ```json [ { "recordId": 6, "level": 63, "doorsOpened": 63, "enemiesKilled": 203, "bossesDefeated": 9, "durationSeconds": 3686 } ] ``` ### GET /playerstats 返回单个玩家的终身统计数据。 * **必需的查询参数:** `name` (例如,`/playerstats?name=Steve3184`) **成功响应:** ```json { "playerName": "Steve3184", "kills": 6, "playtimeSeconds": 38, "maxLevel": 1 } ``` **错误响应:** ```json { "error": "Player not found." } ``` ```json { "error": "Player name query parameter is required." } ``` ### GET /killtop 返回按怪物击杀数排列的前 100 名玩家。 **示例响应:** ```json [ { "playerName": "Steve3184", "kills": 6 } ] ``` ### GET /playtimetop 返回按总游戏时间排列的前 100 名玩家。 **示例响应:** ```json [ { "playerName": "Steve3184", "playtimeSeconds": 38 } ] ``` ### GET /maxleveltop 返回按达到的最高地下城等级排列的前 100 名玩家。 **示例响应:** ```json [ { "playerName": "Steve3184", "maxLevel": 1 } ] ```
## 📋 安装 1. 下载插件的最新版本。 2. 将 `.jar` 文件放入服务器的 `plugins` 文件夹中。 3. 重启您的服务器。 4. 通过编辑 `plugins/RougeStats/config.yml` 来配置插件。 5. 再次重启服务器以应用更改。 ## ❗ 依赖项 * **必需:** 您的服务器必须运行 **Infinity Dungeons** 地图。本插件专门设计用于配合其机制工作。 * **全息图:** 此插件使用内置的 `text_display` 实体,不需要单独的全息图插件。