OgiPlayerStats
一个现代、强大且完全免费的 Minecraft 服务器玩家统计 GUI。
专为性能和多功能性而设计。
*默认统计 GUI 的示例。*
## ✨ 主要特性
- **完全免费且开源**: 没有高级版本,没有隐藏成本。所有功能对每个人开放。
- **完全可配置的 GUI**: 掌控每个统计数据的标题、大小、物品、名称、描述和位置。
- **广泛的统计支持**: 跟踪任何 Minecraft 原生统计数据,包括带有子类型(例如区块、实体)的统计数据。
- **强大的 PlaceholderAPI 集成**:
- **导入**: 从 *任何* 支持 PAPI 的插件显示占位符。
- **导出**: 为你的每个配置统计数据创建动态占位符(例如,`%ogiplayerstats_player_kills%`)。
- **动态物品皮肤**: 使用 `PLAYER_HEAD` 材料并使用 `skull-owner` 来显示玩家特定的皮肤。
- **优化性能**: 轻量级,设计旨在确保对服务器的影响最小。
- **通用兼容性**: 单个 JAR 文件支持 **1.16.5 到 1.21+** 的所有服务器版本。
## 🚀 安装
1. 从 [Releases Page](https://github.com/ogidevs/mc-ogiplayerstats/releases/latest)、[SpigotMC](YOUR_SPIGOT_LINK_HERE) 或 [Modrinth](YOUR_MODRINTH_LINK_HERE) 下载最新版本。
2. 将 `OgiPlayerStats-X.X.X.jar` 文件放入服务器的 `/plugins` 目录中。
3. **(可选但推荐)** 安装 [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) 以解锁插件的全部潜力。
4. 重启你的服务器。默认的配置文件将生成在 `/plugins/OgiPlayerStats/config.yml`。
## ⚙️ 配置
所有配置都通过 `config.yml` 文件处理。你可以在 `displayed-stats` 列表中添加、删除或修改任何统计数据。
## 🚀 安装
1. 从 [Releases Page](https://github.com/ogidevs/mc-ogiplayerstats/releases/latest)、[SpigotMC](YOUR_SPIGOT_LINK_HERE) 或 [Modrinth](YOUR_MODRINTH_LINK_HERE) 下载最新版本。
2. 将 `OgiPlayerStats-X.X.X.jar` 文件放入服务器的 `/plugins` 目录中。
3. **(可选但推荐)** 安装 [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) 以解锁插件的全部潜力。
4. 重启你的服务器。默认的配置文件将生成在 `/plugins/OgiPlayerStats/config.yml`。
## ⚙️ 配置
所有配置都通过 `config.yml` 文件处理。你可以在 `displayed-stats` 列表中添加、删除或修改任何统计数据。
### 添加内置统计
要显示 Minecraft 原生的统计数据,请使用 `statistic` 键。对于需要子类型(如破坏特定方块)的统计数据,还包括 `type` 和 `sub-type`。
```yaml
- slot: 14
material: "DIAMOND_PICKAXE"
name: "&b挖掘的钻石"
lore:
- "&7已破坏的钻石矿石方块。"
- ""
- "&a价值: &f{value}"
statistic: "MINE_BLOCK"
type: "BLOCK"
sub-type: "DIAMOND_ORE"
```
### 添加 PlaceholderAPI 统计
要显示来自其他插件的值,只需使用 `placeholder` 键而不是 `statistic`。lore 中的 `{value}` 将被占位符的输出替换。
```yaml
- slot: 13
material: "GOLD_INGOT"
name: "&e玩家余额"
lore:
- "&7你当前的余额。"
- ""
- "&a价值: &f{value}"
placeholder: "%vault_eco_balance_formatted%"
```
要显示 Minecraft 原生的统计数据,请使用 `statistic` 键。对于需要子类型(如破坏特定方块)的统计数据,还包括 `type` 和 `sub-type`。
> 要获取所有可用统计数据和材质名称的完整列表,请参阅 [Spigot Javadocs](https://hub.spigotmc.org/javadocs/spigot/)。
## 📝 命令 & 权限
| 命令 | 权限 | 描述 |
| -------------------- | ------------------------------ | -------------------------------------------- |
| `/stats [玩家]` | `ogiplayerstats.view` / `ogiplayerstats.view.others` | 查看你自己的或另一个玩家的统计数据。 |
| `/stats reload` | `ogiplayerstats.reload` | 重新加载插件的配置文件。 |
## 🧩 PlaceholderAPI 集成
**OgiPlayerStats** 会根据你配置中每个统计数据的 `name` 字段自动生成自己的占位符。 名称转换为小写,删除颜色代码,空格被替换为下划线。
**示例:**
一个 `name: "&b玩家击杀数"` 的统计数据将变为 `%ogiplayerstats_player_kills%。
一个 `name: "&e玩家余额"` 的统计数据将变为 `%ogiplayerstats_player_balance%。
你可以将这些占位符用于支持 PlaceholderAPI 的任何插件,例如计分板、聊天格式器或全息图。
## 示例配置 GUI
```yaml
displayed-stats:
# --- 玩家信息 (顶部中心) ---
- slot: 4
material: "PLAYER_HEAD"
skull-owner: "{player}"
name: "&b{player}的统计数据"
lore:
- "&7对玩家旅程的概述。"
- ""
- "&e游戏时间: &f%statistic_time_played%"
- "&e加入日期: &f%player_first_join_date%"
# --- 核心 PvP 统计数据 (第二行) ---
- slot: 11
material: "DIAMOND_SWORD"
name: "&a玩家击杀数"
lore:
- "&7在战斗中击败的敌人。"
- ""
- "&e价值: &f{value}"
statistic: "PLAYER_KILLS"
- slot: 12
material: "NETHERITE_SWORD"
name: "&c玩家造成的死亡数"
lore:
- "&7玩家被其他人击败的次数。"
- ""
- "&e价值: &f{value}"
statistic: "ENTITY_KILLED_BY"
type: "ENTITY_TYPE"
sub-type: "PLAYER"
- slot: 13
material: "DRAGON_HEAD"
name: "&5末影龙击杀数"
lore:
- "&7玩家征服了多少次"
- "&7末影龙。"
- ""
- "&e击杀数: &f{value}"
statistic: "KILL_ENTITY"
type: "ENTITY_TYPE"
sub-type: "ENDER_DRAGON"
- slot: 14
material: "SKELETON_SKULL"
name: "&c总死亡数"
lore:
- "&7每次玩家遇到终点。"
- ""
- "&e价值: &f{value}"
statistic: "DEATHS"
- slot: 15
material: "TOTEM_OF_UNDYING"
name: "&e弹出的护身符"
lore:
- "&7玩家对抗死亡的次数。"
- ""
- "&e价值: &f{value}"
statistic: "USE_ITEM"
type: "ITEM"
sub-type: "TOTEM_OF_UNDYING"
# --- 生命偷取 & 资源 (第三行) ---
- slot: 20
material: "GOLDEN_APPLE"
name: "&6吃过的金苹果"
lore:
- "&7PvP 冠军的水果。"
- ""
- "&e价值: &f{value}"
statistic: "USE_ITEM"
type: "ITEM"
sub-type: "GOLDEN_APPLE"
- slot: 21
material: "DIAMOND"
name: "&b挖掘的钻石"
lore:
- "&7财富和力量的基础。"
- ""
- "&e价值: &f{value}"
statistic: "MINE_BLOCK"
type: "BLOCK"
sub-type: "DIAMOND_ORE"
- slot: 22 # 中心生命偷取统计数据
material: "HEART_OF_THE_SEA"
name: "&c❤ 生命偷取的心脏"
lore:
- "&7当前的最高生命值。"
- ""
- "&e心脏: &f{value}"
placeholder: "%lifestealz_hearts%"
- slot: 23
material: "NETHERITE_SCRAP"
name: "&8挖掘的远古碎片"
lore:
- "&7锻造最坚固的盔甲。"
- ""
- "&e价值: &f{value}"
statistic: "MINE_BLOCK"
type: "BLOCK"
sub-type: "ANCIENT_DEBRIS"
- slot: 24
material: "NETHERITE_CHESTPLATE"
name: "&6击杀的生物数"
lore:
- "&7为战利品和经验杀死的生物。"
- ""
- "&e价值: &f{value}"
statistic: "MOB_KILLS"
# --- 经济 & 服务器信息 (底部行) ---
- slot: 30
material: "EMERALD"
name: "&a复活"
lore:
- "&7玩家被复活多少次"
- ""
- "&e价值: &f{value}"
placeholder: "%lifestealz_revived%"
- slot: 31 # 底部中心
material: "GOLD_INGOT"
name: "&e玩家余额"
lore:
- "&7当前的财富。"
- ""
- "&e余额: &f{value}"
placeholder: "%vault_eco_balance_formatted%"
- slot: 32
material: "COMPASS"
name: "&b在线状态"
lore:
- "&7是否当前在线?"
- ""
- "&e状态: &f{value}"
placeholder: "%player_online%"
```

## 🤝 贡献
欢迎贡献! 如果你想为该项目做出贡献,请执行以下步骤:
1. Fork 仓库。
2. 创建一个新分支 (`git checkout -b feature/YourAmazingFeature`)。
3. 进行更改。
4. 提交更改 (`git commit -m 'Add some amazing feature'`)。
5. 推送到分支 (`git push origin feature/YourAmazingFeature`)。
6. 打开一个新拉取请求。
## 🐛 错误报告
如果你发现了一个 bug,请在 [GitHub Issues](https://github.com/ogidevs/mc-ogiplayerstats/issues) 页面上打开一个 issue。
在你的报告中包含以下信息:
- 服务器版本(例如,paper 1.21.5)
- 插件版本
- bug 的详细描述
- 重现 bug 的步骤
- 来自你的控制台日志的任何相关错误
---
Ogi 开发。