/spark ping
基本信息
| 属性 | 值 |
|---|---|
| 命令名 | ping |
| 别名 | 无 |
| 来源 | HealthModule.ping(HealthModule.java:79) |
| 参数 | --player <username>(可重复) |
| Tab 补全 | TabCompleter.completeForOpts(arguments, "--player") |
查询玩家到服务器的往返延迟统计。
功能
三种行为分支(HealthModule.ping):
1. 平台不支持
platform.getPingStatistics() 为 null 时,直接回复「Ping data is not available on this platform.」并返回。
2. 指定玩家
传了 --player 时逐个查询。查到则回复「Player <名字> has <延迟> ms ping.」;查不到该玩家则回复「Ping data is not available for ‘<名字>’.」
3. 全服汇总
未指定玩家时,先检查样本量:summary.total() == 0 && average.getSamples() == 0 则回复「There is not enough data to show ping averages yet. Please try again later.」
否则输出标题「Average Pings (min/med/95%ile/max ms) from now, last 15m:」,两个窗口以 ; 分隔:
- 当前快照(
currentSummary())的 min / median / 95th / max - 最近 15 分钟滚动平均(
getPingAverage())的 min / median / 95th / max
⚠️ 1.7.10 上该命令不可用
PingStatistics 仅在 plugin.createPlayerPingProvider() 返回非 null 时才构造(SparkPlatform.java:165-166):
PlayerPingProvider pingProvider = plugin.createPlayerPingProvider();
this.pingStatistics = pingProvider != null ? new PingStatistics(pingProvider) : null;
接口 SparkPlugin.createPlayerPingProvider() 的默认实现返回 null(SparkPlugin.java:168-170),而 spark-forge1710 没有覆写它:Forge1710ServerSparkPlugin 与 Forge1710ClientSparkPlugin 均未实现该方法。
Forge1710PlayerPingProvider.java 确实存在,其 poll() 会遍历 server.getConfigurationManager().playerEntityList 读取每个 EntityPlayerMP.ping,但全仓对它的引用只有 2 处,均在它自己的文件里(类声明与构造函数):
$ grep -rn 'Forge1710PlayerPingProvider' --include=*.java .
./spark-forge1710/.../Forge1710PlayerPingProvider.java:33:public class Forge1710PlayerPingProvider implements PlayerPingProvider {
./spark-forge1710/.../Forge1710PlayerPingProvider.java:36: public Forge1710PlayerPingProvider(MinecraftServer server) {
对照:其余 11 个平台模块(bukkit / bungeecord / fabric / forge / minestom / nukkit / sponge7 / sponge8 / velocity / velocity4 / waterdog)都覆写了 createPlayerPingProvider()。1.7.10 模块是唯一遗漏的一个。
按「死代码 ≠ 已注册内容」的口径,Forge1710PlayerPingProvider 在 1.7.10 上属于从未接线的死代码。因此在 GTNH 1.7.10 上执行 /spark ping(或 /sparkc ping)必然命中分支 1,恒定回复「Ping data is not available on this platform.」
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 分位数 | min / median / 95th percentile / max | StatisticFormatter.formatPingRtts |
| 滚动平均窗口 | 15 分钟 | HealthModule.ping |
相关条目
- /spark tps - 同一模块提供的 TPS / CPU 统计(可正常输出)
- /spark healthreport - ping 不在健康报告内容中,需单独查询