Metrics 收集
收集使用你的插件的服务器统计信息对于决定你的下一步开发方向很有帮助。然而,Ore 插件提交指南 的“外部连接”一节指出仅当有明确同意时插件才能收集统计信息。这种“明确同意”必须是可选的,且数据收集默认应当关闭。
为简化同意征集,Sponge 为插件提供了一个中心化的检查方式。
Metric 信息收集是基于插件的;插件不能认为同意某个插件收集信息等于同意所有插件收集信息。
获得同意
要获得服主同意,插件可向服主发出相应请求。这可以通过某种启动时显示给玩家的提示,让他们更新配置文件来完成。SpongeForge 和 SpongeVanilla 也提供了 /sponge metrics <puglinid> enable
命令。
插件可以向服主提供快速收集同意的命令或点击即可同意的游戏内“链接”。
警告
插件不能在未经服主统一的情况下直接执行 /sponge metrics <pluginid> enable
命令,否则这样的插件将会被 Ore 平台拒绝。
備註
/sponge metrics
命令只保证在 SpongeForge
和 SpongeVanilla
两个服务器实现中存在。其他诸如 Lantern
等实现中可能并无此命令。
检查同意
MetricsConfigManager 可用于检查插件是否已获得收集 metrics 信息的许可。你可通过依赖注入到你的插件主类中来获取它,也可直接通过 Sponge#getMetricsConfigManager() 按需获取。
每次你的插件想发送 metrics 信息时,你都必须检查 MetricsConfigManager#getCollectionState(PluginContainer),在这里你需要传入你的插件的 PluginContainer。当且仅当这个方法返回 Tristate#TRUE
的时候你才能发送 metrics 信息。
下列例子展示了如何使用字段注入获得 MetricsConfigManager
对象和你的插件的 PluginContainer
,以及如何使用这两者来检查许可。
示例
import com.google.inject.Inject;
import org.spongepowered.api.plugin.PluginContainer;
import org.spongepowered.api.util.metric.MetricsConfigManager;
@Inject
private PluginContainer container;
@Inject
private MetricsConfigManager metricsConfigManager;
public boolean hasConsent() {
return this.metricsConfigManager.getCollectionState(this.container).asBoolean();
}