Skip to content

开发者 API

spark 的 API 允许插件/模组开发者获取 spark 所记录的信息,并将它们为己所用。

推荐开发者使用本文介绍的 API,而不是硬拆内部代码。如果 API 提供的内容没有你想要的,先来问问我们,我们可能会为你添加!

导入 API

API 成品会发布到 Sonatype Snapshots 仓库中。

你可以通过 Gradle 或者 Maven 将它导入至你的项目,或将其用作依赖。可以根据需要添加下文的构建脚本或 pom。

访问 API

API 的主包为 me.lucko.spark.api,API 的主接口为 me.lucko.spark.api.Spark

Spark 接口在拥有 ServiceManager 的平台上,被作为“服务”提供。另外,你也可以通过 SparkProvider 的单个示例获取接口。

例如,在 Bukkit 核心上,你可以这么写:

Java
RegisteredServiceProvider<Spark> provider = Bukkit.getServicesManager().getRegistration(Spark.class);
if (provider != null) {
    Spark spark = provider.getProvider();
}

在其他所有的平台上,你可以这么写:

Java
Spark spark = SparkProvider.get();

注意: 在 spark 尚未载入的时候使用 #get 方法会导致抛出 IllegalStateException 错误!

使用 API

spark API 当前能提供一系列的统计数据,这些数据都是由 spark 记录/计算的。这些可以通过 Spark 接口获取。

TPS

获取由 spark 计算的 TPS 数值...

Java
// 获取 TPS 数据 (在不存在滴答的服务端上会返回 null!)
DoubleStatistic<StatisticWindow.TicksPerSecond> tps = spark.tps();

// 返回最近 10 秒 / 5 分钟的平均 TPS
double tpsLast10Secs = tps.poll(StatisticWindow.TicksPerSecond.SECONDS_10);
double tpsLast5Mins = tps.poll(StatisticWindow.TicksPerSecond.MINUTES_5);

MSPT

获取由 spark 计算的 MSPT(每刻毫秒数) 数值...

Java
// 获取 MSPT 数值 (在不支持此类计算的服务端上会返回 null!)
GenericStatistic<DoubleAverageInfo, StatisticWindow.MillisPerTick> mspt = spark.mspt();

// 返回最近一分钟内的平均值
DoubleAverageInfo msptLastMin = mspt.poll(StatisticWindow.MillisPerTick.MINUTES_1);
double msptMean = msptLastMin.mean();
double mspt95Percentile = msptLastMin.percentile95th();

CPU 使用情况

获取 CPU 使用情况的信息...

Java
// 获取 CPU 使用情况的相关信息
DoubleStatistic<StatisticWindow.CpuUsage> cpuUsage = spark.cpuSystem();

// 返回最近一分钟内的平均用量
double usagelastMin = cpuUsage.poll(StatisticWindow.CpuUsage.MINUTES_1);

GC

获取 GC 活动的相关信息...

Java
// 返回自服务器启动以来的 GC 活动情况
Map<String, GarbageCollector> gc = spark.gc();

for (GarbageCollector collector : gc.values()) {
    String name = collector.name();
    long frequency = collector.avgFrequency();
    double time = collector.avgTime();
}

另见