添加 一个页面够了

Branulf 2025-04-19 23:13:59 +08:00
commit b8a8e68266

@ -0,0 +1,134 @@
# 玩家在线时间统计与服务器监控 Mod
![Minecraft Fabric](https://img.shields.io/badge/Minecraft-1.21.4-green?logo=minecraft)
![Mod Loader](https://img.shields.io/badge/Mod%20Loader-Fabric-blueviolet)
## 功能概述
本模组为 Minecraft 服务器提供以下核心功能:
### 1. 玩家时间追踪系统
- **精确计时**:记录白名单玩家的累计游戏时长
- **时间窗口统计**
- 总时长(自模组安装起)
- 30天滚动窗口
- 7天滚动窗口
- **数据持久化**:自动保存至`player_time_data.json`
- **实时更新**:玩家在线时持续累积当前会话时间
### 2. 嵌入式 Web 服务
- **默认端口**60048可通过配置文件修改
- **跨平台仪表盘**:响应式网页界面
- **数据可视化**:实时图表展示服务器性能指标
### 3. 游戏内指令
- `/onlineTime [页码]`:查看分页统计
- **交互式界面**:支持点击翻页功能
---
## 技术架构
### 数据追踪模块 (`PlayerTimeTracker.java`)
```java
// 核心数据结构
public static class PlayerTimeData {
long totalTime = 0;
long lastLogin = 0;
RollingTimeWindow rolling30Days = new RollingTimeWindow(30);
RollingTimeWindow rolling7Days = new RollingTimeWindow(7);
}
```
- **滚动窗口算法**:自动清理过期数据
- **线程安全设计**:使用`ConcurrentHashMap`存储数据
- **异步保存**通过独立线程执行文件I/O
### Web 服务模块 (`WebServer.java`)
#### API 端点列表
| 端点 | 数据类型 | 描述 |
|-----------------------|----------|---------------------------|
| `/api/stats` | JSON | 全部玩家时间统计 |
| `/api/widget-data` | JSON | 实时在线玩家与排行榜数据 |
| `/api/server-status` | JSON | 服务器硬件性能指标 |
| `/api/online-players` | JSON | 分类在线玩家列表 |
### 前端监控界面
![仪表盘示意图](https://branulf.top/files/exampleOnlineTimeMod.png)
---
## 安装与配置
### 安装步骤
1. 将模组文件放入服务端`mods`目录
2. 启动服务器生成配置文件
3. 修改`playertime-config.json`
```json
{
"webPort": 60048
}
```
### 访问方式
1. 浏览器输入:`http://服务器IP:端口`
2. 默认凭证:无需认证
---
## 数据存储格式
### 玩家时间数据 (`player_time_data.json`)
```json
{
"玩家UUID": {
"totalTime": 3600,
"lastLogin": 1713571200,
"rolling30Days": {
"entries": [
{"timestamp": 1713571200, "seconds": 3600}
]
},
"rolling7Days": { ... }
}
}
```
---
## 开发者文档
### 扩展API使用示例
```javascript
// 获取服务器状态
fetch('/api/server-status')
.then(res => res.json())
.then(data => {
console.log('当前TPS:', 1000 / data.server.average_tick_time_ms);
});
```
### 事件监听
```java
// 玩家加入事件处理
ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> {
timeTracker.onPlayerJoin(handler.player);
});
```
---
## 常见问题
### 数据异常处理
- 日志路径:`logs/PlayerTimeTracker.log`
- 自动恢复机制:损坏数据文件会自动重建
### 性能优化
- 内存管理:采用时间窗口算法限制数据增长
- 异步处理:使用`ExecutorService`线程池
---
## 开源协议
[MIT License](https://opensource.org/licenses/MIT) © 2025 BRanulf