# Statify - 简单的 Minecraft 数据统计,做得对
## _更新 4/10:Statify 2 将于 2024 年夏季发布,具有更好的自动补全、更少的错误和良好的 Karma!_
嗨!我是 @quantumbagel,这是我的第一个插件——Statify。这是一款小巧(<50kb)、资源高效且功能强大的服务器端插件,用于获取一个玩家或整个服务器的数据统计。
### 我为什么需要这个?
如果你想要一种汇总服务器上所有数据的办法(而不仅仅是通过一个玩家的统计菜单——这个插件允许轻松地可视化数据统计)。
### 优点/缺点
以下是本插件的优缺点列表(这并非 *完美的* 插件)
#### 优点
* 允许复杂查询 (`killed:zombie+killed:skeleton`, `(killed:zombie+killed:skeleton)^custom:beds_broken`,甚至 `tan(killed:zombie) + killed:skeleton`)
* 能够对特定玩家的各个类别进行排名
* 能够创建和保存复杂查询的简写
* 是的,确实 *有* 递归检测器
#### 缺点
* 没有自动补全,你必须了解 MC 数据的整体布局(若要获取出色的指南,请访问 https://minecraft.fandom.com/wiki/Statistics)
* 这是我写的第一个插件,所以可能存在大量的错误和故障
* 由于用户名重复的可能性,在离线模式下(破解版 Minecraft)效果不佳
* 没有多线程支持
* 没有自定义命令的有效性检查
* 处理非常大的数字时可能会出现错误 >:(
这是一个 *Bukkit* 插件,所以将 .jar 文件放在你的 Spigot/Bukkit/CraftBukkit 服务器的 `plugins` 文件夹中。
### 我应该如何使用这些命令?
*NB: [description] 不是必需的,等号后的为默认值,是必需的*
### /leaderboard, /lb
#### 格式:
`/leaderboard [top entries数量]=10 <复杂表达式>`
#### 示例:
`/lb killed:zombie` (为前 10 名玩家的僵尸击杀数发出请求)
`/lb 5 killed:zombie` (为前 5 名玩家的僵尸击杀数发出请求)
`/lb killed:total` (为具有“killed”类别最高总和的玩家发出请求(击杀实体总数))
`/lb APlayerOfMinecraft:kd` (APlayerOfMinecraft 是用户名,kd 是用户定义的自定义命令(在这种情况下为击杀差值))
`/lb killed:zombie + APlayerOfMinecraft:kd` (你可以同时使用它们,将这些统计数据作为数字)
`/lb killed:zombie * APlayerOfMinecraft:kd + custom:walk_one_cm`
### /stat
#### 格式:
`/stat [用户名]=<发送者> <类别> [top entries数量]=10`
#### 示例
`/stat killed` (返回发送消息的玩家“killed”类别的 top 10 排名)
`/stat killed 5` (返回发送消息的玩家“killed”类别的 top 10 排名)
`/stat APlayerOfMinecraft killed` (返回玩家“APlayerOfMinecraft”的“killed”类别的 top 10 排名)
`/stat APlayerOfMinecraft killed 5` (返回玩家“APlayerOfMinecraft”的“killed”类别的 top 5 排名)
### /custom
#### 格式:
`/custom set <命令名> <复杂表达式>`
`/custom list [用户名]=<发送者>`
`/custom get [用户名]=<发送者> <命令名>`
`/custom delete <命令名>`
#### 示例
`/custom set kd killed:total-killed_by:total` (将发送者的自定义命令“kd”设置为“killed:total-killed_by:total”。如果玩家的名字是“APlayerOfMinecraft”,则这可以像在 `/leaderboard` 示例中一样引用)
`/custom list` (列出当前玩家定义的命令)
`/custom list APlayerOfMinecraft` (列出玩家“APlayerOfMinecraft”定义的命令)
`/custom get kd` (打印当前玩家自定义统计信息 `kd` 的定义)
`/custom get APlayerOfMinecraft kd` (打印玩家 "APlayerOfMinecraft" 自定义统计信息 `kd` 的定义)
`/custom delete kd` (删除当前玩家定义的命令 `kd`,如果定义了的话)
### /playerrank
#### 格式
`/playerrank [top entries数量]=10`
#### 示例
`/playerrank` (列出使用我即兴创造的 PlayerScore 算法的服务器上 top 10 玩家)
`/playerrank 5` (列出服务器上 top 5 玩家)
这就是全部内容 - 希望你喜欢这个小插件!