# V-Monitor - Velocity服务器活动与状态监控
[](https://github.com/MC-Nirvana/V-Monitor/releases)
[](https://github.com/MC-Nirvana/V-Monitor/issues)
[](https://github.com/MC-Nirvana/V-Monitor/blob/main/LICENSE)
## I. 简介
V-Monitor 是一个轻量级的 Velocity 代理插件(内部代号:Arona-01),旨在监控玩家加入、离开和服务器切换活动。它为玩家和管理员提供便捷的命令,用于查询在线玩家列表以及详细的后端服务器信息。
## II. 主要特性
- **玩家活动监控**: 实时跟踪玩家登录、登出和服务器切换事件
- **在线状态查询**: 命令查看在线玩家列表及其服务器分布
- **服务器信息查询**: 获取 Velocity 代理和所有子服务器的详细信息
- **插件信息管理**: 列出加载的插件并查看详细信息
- **玩家数据查询**: 查看特定玩家的活动历史和总游戏时间统计
- **多语言支持**: 支持多种语言,并易于扩展
- **灵活配置**: 通过配置文件自定义服务器别名和语言设置
- **数据持久化**: 使用 SQLite 或 MySQL 存储玩家活动数据
- **WebSocket 支持**: 实时玩家活动推送 via WebSocket(计划中)
## III. 安装指南
1. 从 [发布页面](https://github.com/MC-Nirvana/V-Monitor/releases/latest) 下载最新的插件 JAR 文件。
2. 将下载的 JAR 文件放入 Velocity 代理服务器的 `plugins` 文件夹中。
3. 启动 Velocity 代理服务器。插件将自动生成默认的配置文件和语言文件。
4. 编辑配置文件和语言文件,以满足您的需求。
5. 重新加载插件配置 (`/vm reload`) 或重启服务器以使更改生效。
6. 享受 V-Monitor 带来的便捷!
## IV. 插件使用(命令)
主命令是 `/vmonitor`,别名 `/vm`。
| 命令 | 示例用法 | 权限节点 | 描述 |
|-----------------------------------|------------------------------------------------------|------------------|------------------------------------------|
| `help` | `/vm help` | `none` | 获取插件的帮助信息。 |
| `reload` | `/vm reload` | `vmonitor.admin` | 重新加载插件配置。 |
| `version` | `/vm version` | `vmonitor.admin` | 获取插件版本信息。 |
| `server list [all or serverName]` | `/vm server list all` 或 `/vm server list lobby` | `none` | 列出所有或特定服务器上的玩家。|
| `server info [all or serverName]` | `/vm server info all` 或 `/vm server info lobby` | `none` | 获取所有或一个服务器的详细信息。 |
| `plugin list` | `/vm plugin list` | `vmonitor.admin` | 列出所有加载的插件。 |
| `plugin info [all or pluginID]` | `/vm plugin info all` 或 `/vm plugin info V-Monitor` | `vmonitor.admin` | 获取所有或一个插件的详细信息。 |
| `player info [playerID]` | `/vm player info MC_Nirvana` | `vmonitor.admin` | 获取特定玩家的详细信息。 |
| `player switch [playerID]` | `/vm player switch MC_Nirvana` | `vmonitor.admin` | 获取玩家的服务器切换日志。 |
*默认情况下,具有 OP 权限的玩家和控制台具有所有权限节点。*
## V. 配置文件 (config.yml)
插件启动时,将在 `plugins/v-monitor/` 目录中生成一个 `config.yml` 文件。
以下是一个带有详细信息的配置文件示例:
```yaml
# V-Monitor 配置文件
# 插件基本设置
plugin-basic:
# 默认语言设置
language:
# 默认语言
# 支持语言:zh_cn, zh_tw, en_us
default: "zh_cn"
# 数据存储设置
data-storage:
# 数据库类型
# 支持类型:sqlite, mysql
type: "sqlite"
# SQLite 数据库配置
sqlite:
# SQLite 数据库文件路径
path: "data.db"
# MySQL 连接配置
mysql:
# MySQL 服务器地址
host: "localhost"
# MySQL 服务器端口
port: 3306
# MySQL 数据库名称
database: "v_monitor"
# MySQL 数据库用户名
username: "root"
# MySQL 数据库密码
password: "password"
# MySQL 自定义参数配置
# 参数格式:database 设置项:值
# 示例:
# parameters:
# useSSL: "false"
parameters: []
# HikariCP 数据库连接池配置
hikari:
# 最大连接数
maximum-pool-size: 32
# 最小空闲连接数
minimum-idle: 16
# 连接超时时间
# 单位:毫秒
connection-timeout: 30000
# 空闲连接生存时间
# 单位:毫秒
idle-timeout: 600000
# 最大生存时间
# 单位:毫秒
max-lifetime: 1800000
# 服务器信息设置
server-info:
# 服务器名称
name: "My Velocity Server"
# 服务器别名
# 参数格式:实际服务器名称:“别名”
# 支持同时为多个服务器设置别名
# 示例:
# aliases:
# lobby: "hub"
# game: "minigames"
aliases: []
# 报告设置
report:
# 启用报告功能
# 如果启用,将在指定时间自动生成报告
enabled: true
# 自动清理报告
auto-clean-report: true
# 输出目录
output-directory: "Reports"
# 报告生成时间
# 格式为 HH:mm
# 注意:时间应为 24 小时制
# 示例:每天下午 4 点生成报告
# schedule-time: "16:00"
schedule-time: "16:00"
```
您可以编辑此文件以自定义插件的行为和消息内容。 要获取完整的默认配置,请参阅插件首次运行时生成的配置文件。
## VI. 语言文件 (lang/*.yml)
语言文件存储在 `plugins/v-monitor/lang/` 中,格式为 YAML。
每个 `.yml` 文件对应一种语言,包含插件输出的所有文本消息和格式模板。您可以随意编辑这些文件,并使用 MiniMessage 格式自定义颜色、样式和内容。
## VII. 数据存储 (data.db)
插件会生成一个名为 `data.db` 的 SQLite3 数据库文件,位于 `plugins/v-monitor/` 目录中。
此文件存储了连接到代理服务器的玩家的信息,由其 **UUID** 唯一标识。 **请勿手动编辑此文件。**
您可以编辑配置文件来切换到 MySQL。
## VIII. 从源代码构建
要从源代码构建插件,您需要 JDK 17+ 和 Gradle.
### 8.1 构建步骤
1. 克隆仓库:`git clone https://github.com/MC-Nirvana/V-Monitor.git`
2. 进入仓库目录:`cd V-Monitor`
3. 运行构建命令:`./gradlew build`
4. 在 `build/libs/` 目录中找到生成的 JAR 文件
### 8.2 开发环境设置
- 推荐使用 IntelliJ IDEA 进行开发
- 导入项目后,请确保下载 Gradle 依赖项
## IX. 贡献与支持
欢迎通过 GitHub Issues 提交错误报告和功能建议。
### 9.1 如何贡献
- 提交代码改进和新功能
- 改进文档和翻译
- 报告错误和安全问题
- 参与讨论并提供反馈
### 9.2 Pull Request 最佳实践
1. Fork 项目并创建一个功能分支
2. 编写清晰的提交消息
3. 确保代码符合项目编码标准
4. 添加适当的测试用例
5. 保持每个 Pull Request 专注于一个功能或修复
### 9.3 开发人员资源
- 该项目遵循标准的 Git 工作流程
- 确保您的代码通过所有测试后再提交 Pull Request
- 保持一致的编码风格,遵循现有的代码结构
## X. 项目路线图
- [ ] 完成 WebSocket 实时数据推送功能
- [ ] 提供基于 Web 的管理界面
## XI. 许可证
本项目采用 [GPL-3.0 许可证](LICENSE)。
## XII. 作者的话
这是我第一次为 Minecraft Java 版开发服务器端插件。虽然在开发过程中使用了 AI 辅助编码,代码质量仍有提升空间,但我将继续进行优化。最初,这个插件是为我自己的 Minecraft Java 版服务器开发的,但我希望它也能为其他服务器管理员提供帮助。
## XIII. 支持与反馈
如果您喜欢这个项目,请考虑:
- 给它一个 Star ⭐
- 在社交媒体上分享它
- 参与讨论并提供有价值的反馈
### 13.1 赞助
如果您想支持该项目的持续开发和维护,您可以通过:
- [Mianbaoduo](https://mbd.pub/o/MC_Nirvana) - 针对中国大陆用户
- [PayPal](https://paypal.me/WHFNirvana) - 针对海外用户
您的赞助将用于:
- 维护项目基础设施
- 请作者去码头吃炸薯条 :)