如何每小时向 MCStats 发送自定义图形数据?
How to send custom graph data to MCStats every hour?
我一直在开发一个插件并获得了一些非常有趣的数据,我正在尝试添加一个自定义图表并成功地让图表以我在 [=12 的代码中设置的名称出现=].
我的插件是 here 并重新创建致密矿石 Mod。
我想按小时发送块挖掘数据。到目前为止,这是我 onEnable
中的内容:
try {
Metrics metrics = new Metrics(this);
Graph blocksMinedGraph = metrics.createGraph("Extra items from blocks");
blocksMinedGraph.addPlotter(new Metrics.Plotter("Coal Ore") {
@Override
public int getValue() {
return coalMined;
}
});
blocksMinedGraph.addPlotter(new Metrics.Plotter("Iron Ore") {
@Override
public int getValue() {
return ironMined;
}
});
metrics.start();
} catch (IOException e) {
getLogger().info(ANSI_RED + "Metrics have been unable to load for: DenseOres" + ANSI_RESET);
}
这已在我的 MCStats 页面上成功创建了一个名为 'Extra items from blocks' 的新图表,尽管到目前为止我无法填充它。我已经试过了,但不知道如何发送数据。
关于这个问题,在发送数据时,我是否必须在某个文件中保留值的计数,以便它们在重新加载和服务器重启之间持续存在?
我似乎已经通过将 blocksMinedGraph.addPlotter(...)
部分放在异步重复任务中解决了这个问题。
这是包含重复任务的代码,但 MCStats 上的图表需要永远更新。
try {
Metrics metrics = new Metrics(this);
if (!metrics.isOptOut()) {
final Graph blocksMinedGraph = metrics.createGraph("Extra items from blocks (Since v2.3)");
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new Runnable() {
public void run() {
getLogger().info("Graph data sent");
blocksMinedGraph.addPlotter(new Metrics.Plotter("Coal Ore") {
@Override
public int getValue() {
return coalMined;
}
});
blocksMinedGraph.addPlotter(new Metrics.Plotter("Iron Ore") {
@Override
public int getValue() {
return ironMined;
}
});
}
}, DELAY, INCREMENT);
getLogger().info("Metrics started");
metrics.start();
}
} catch (IOException e) {
getLogger().info(ANSI_RED + "Metrics have been unable to load for: DenseOres" + ANSI_RESET);
}
我一直在开发一个插件并获得了一些非常有趣的数据,我正在尝试添加一个自定义图表并成功地让图表以我在 [=12 的代码中设置的名称出现=].
我的插件是 here 并重新创建致密矿石 Mod。
我想按小时发送块挖掘数据。到目前为止,这是我 onEnable
中的内容:
try {
Metrics metrics = new Metrics(this);
Graph blocksMinedGraph = metrics.createGraph("Extra items from blocks");
blocksMinedGraph.addPlotter(new Metrics.Plotter("Coal Ore") {
@Override
public int getValue() {
return coalMined;
}
});
blocksMinedGraph.addPlotter(new Metrics.Plotter("Iron Ore") {
@Override
public int getValue() {
return ironMined;
}
});
metrics.start();
} catch (IOException e) {
getLogger().info(ANSI_RED + "Metrics have been unable to load for: DenseOres" + ANSI_RESET);
}
这已在我的 MCStats 页面上成功创建了一个名为 'Extra items from blocks' 的新图表,尽管到目前为止我无法填充它。我已经试过了,但不知道如何发送数据。
关于这个问题,在发送数据时,我是否必须在某个文件中保留值的计数,以便它们在重新加载和服务器重启之间持续存在?
我似乎已经通过将 blocksMinedGraph.addPlotter(...)
部分放在异步重复任务中解决了这个问题。
这是包含重复任务的代码,但 MCStats 上的图表需要永远更新。
try {
Metrics metrics = new Metrics(this);
if (!metrics.isOptOut()) {
final Graph blocksMinedGraph = metrics.createGraph("Extra items from blocks (Since v2.3)");
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new Runnable() {
public void run() {
getLogger().info("Graph data sent");
blocksMinedGraph.addPlotter(new Metrics.Plotter("Coal Ore") {
@Override
public int getValue() {
return coalMined;
}
});
blocksMinedGraph.addPlotter(new Metrics.Plotter("Iron Ore") {
@Override
public int getValue() {
return ironMined;
}
});
}
}, DELAY, INCREMENT);
getLogger().info("Metrics started");
metrics.start();
}
} catch (IOException e) {
getLogger().info(ANSI_RED + "Metrics have been unable to load for: DenseOres" + ANSI_RESET);
}