/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 不在健康报告内容中,需单独查询