0

我一直在研究一个插件,并获得了一些非常有趣的数据,我正在尝试添加一个自定义图表,并成功地让图表以我在MCStats上的代码中设置的名称出现。

我的插件在这里并重新创建了 Dense Ores 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 页面上创建了一个名为“块中的额外项目”的新图表,尽管到目前为止我还无法填充它。我已经尝试过,但无法弄清楚如何发送数据。

连接到这个问题,在发送数据时,我是否必须在某处保留文件中的值的计数,以便它们在重新加载和服务器重新启动之间持续存在?

4

1 回答 1

1

我似乎已经通过将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);
}
于 2015-08-01T08:22:45.150 回答