- 版权类型
- 原创
- 插件中文名称
- 获取玩家信息
- 插件英文名称
- getPlayerInfo
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- 其他核心
- 语言支持
- 中文(简体)
- 前置组件
- PlaceholderAPI
- 适配版本(Java)
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.7
[MD]
一个用于 Spigot/Bukkit 服务器的插件,通过指令获取玩家游戏信息并以 JSON 格式返回。
## 功能特性
- 🎮 **获取单个玩家信息** - 查询指定玩家的详细游戏数据
- 👥 **批量查询** - 一次性获取所有在线玩家的信息
- 🔌 **PlaceholderAPI 集成** - 支持获取其他插件提供的变量
- 💤 **离线玩家查询** - 支持查询离线玩家的基本信息
- 🚀 **异步处理** - 大量玩家查询时使用异步处理,不阻塞服务器
- 📊 **JSON 格式输出** - 统一的 JSON 格式,便于外部系统集成
- 🔐 **权限控制** - 灵活的权限配置,保护玩家隐私
- 📝 **详细日志** - 完整的审计日志和性能监控
## 使用方法
### 指令
**玩家信息指令:**
```
/playerinfo <玩家名> - 获取指定玩家的信息
/playerinfo all - 获取所有在线玩家的信息
/playerinfo reload - 重载配置文件
```
**服务器信息指令:**
```
/serverinfo - 获取服务器信息(版本、在线人数、插件列表等)
```
**权限检查指令:**
```
/checkperm <玩家名> <权限节点> - 检查玩家是否拥有指定权限
```
### 权限
- `playerinfo.use` - 使用 playerinfo 指令的权限(默认)
- 控制台自动拥有所有权限
## 配置文件
### 配置选项
```yaml
# 权限节点 - 玩家使用指令所需的权限
permission: "playerinfo.use"
# 是否启用 PlaceholderAPI 集成
enable-papi: true
# 是否允许查询离线玩家
allow-offline-query: true
# PlaceholderAPI 变量列表
# 这些变量会在返回的 JSON 中包含
placeholders:
- "%vault_eco_balance%"
- "%player_level%"
- "%player_ping%"
```
### 配置说明
- **permission**: 定义使用 `/playerinfo` 指令所需的权限节点
- **enable-papi**: 是否启用 PlaceholderAPI 集成(需要安装 PlaceholderAPI 插件)
- **allow-offline-query**: 是否允许查询离线玩家的信息
- **placeholders**: 要获取的 PlaceholderAPI 变量列表
## JSON 响应格式
### 成功响应(单个玩家)
```json
{
"success": true,
"data": {
"name": "PlayerName",
"uuid": "xxx-xxx-xxx-xxx",
"online": true,
"placeholders": {
"%player_level%": "30"
}
}
}
```
### 错误响应
```json
{
"success": false,
"error": "Player not found"
}
```
### 服务器信息响应
```json
{
"success": true,
"data": {
"serverName": "CraftBukkit",
"version": "1.20.1",
"bukkitVersion": "1.20.1-R0.1-SNAPSHOT",
"onlinePlayers": 5,
"maxPlayers": 20,
"motd": "A Minecraft Server",
"uptime": 3600000,
"tps": 20.0,
"plugins": [
{
"name": "GetPlayerInfo",
"version": "1.0",
"enabled": true,
"authors": ["BuGeDev"]
}
],
"mods": [
{
"modId": "examplemod",
"name": "Example Mod",
"version": "1.0.0",
"description": "An example mod"
}
]
}
}
```
**注意**:Mod 列表仅在混合服务端(Mohist、Arclight、Magma 等)上可用。纯 Bukkit/Spigot 服务器将返回空的 mods 数组。
### 权限检查响应
**在线玩家:**
```json
{"success":true,"data":{"player":"Steve","permission":"minecraft.command.gamemode","hasPermission":true,"online":true,"uuid":"xxx-xxx-xxx"}}
```
**离线玩家:**
```json
{"success":true,"data":{"player":"Steve","permission":"minecraft.command.gamemode","hasPermission":true,"online":false,"uuid":"xxx-xxx-xxx","method":"luckperms"}}
```
**支持的权限检查方式:**
- `luckperms` - 使用 LuckPerms API(推荐)
- `vault` - 使用 Vault API
- `op-check` - 检查玩家是否为 OP
- `default-deny` - 默认拒绝(无权限插件时)
### 可能的错误消息
- `"Usage: /playerinfo <player|all|reload>"` - playerinfo 指令格式错误
- `"Usage: /checkperm <player> <permission>"` - checkperm 指令格式错误
- `"Permission denied"` - 权限不足
- `"Player not found"` - 玩家不存在或未登录过服务器
- `"Internal error occurred"` - 内部错误
## 数据字段说明
### 基础字段
- **name**: 玩家名称
- **uuid**: 玩家的唯一标识符
- **online**: 玩家是否在线(true/false)
- **lastPlayed**: 最后登录时间(Unix 时间戳)
- **firstPlayed**: 首次登录时间(Unix 时间戳)
### 服务器信息字段
- **serverName**: 服务器名称
- **version**: Minecraft 版本
- **bukkitVersion**: Bukkit 版本
- **onlinePlayers**: 当前在线玩家数
- **maxPlayers**: 最大玩家数
- **motd**: 服务器 MOTD 消息
- **uptime**: 服务器运行时间(毫秒)
- **plugins**: Bukkit 插件列表
- **name**: 插件名称
- **version**: 插件版本
- **enabled**: 是否启用
- **authors**: 作者列表
- **mods**: Forge/Fabric Mod 列表(仅混合服务端)
- **modId**: Mod ID
- **name**: Mod 名称
- **version**: Mod 版本
- **description**: Mod 描述
### PlaceholderAPI 变量
如果启用了 PlaceholderAPI 集成,`placeholders` 字段会包含配置文件中定义的变量值。
## 性能优化
### 异步处理
当查询所有玩家时(`/playerinfo all`),插件会自动使用异步处理:
1. 在异步线程中收集所有玩家数据
2. 收集完成后切换回主线程
3. 构建并发送 JSON 响应
这确保了即使在玩家数量较多(50+)的情况下,也不会阻塞服务器主线程。
### 性能指标
- 单个玩家查询:通常 < 50ms
- 50 个玩家批量查询:通常 < 2 秒
- 异步处理不会影响服务器 TPS
## 兼容性
### 支持的 Minecraft 版本
- ✅ 1.16.x
- ✅ 1.17.x
- ✅ 1.18.x
- ✅ 1.19.x
- ✅ 1.20.x
### 支持的服务器
- ✅ Spigot
- ✅ Paper
- ✅ Purpur
- ⚠️ Bukkit (基础功能)
### 可选依赖
- PlaceholderAPI
[/MD]