From 26cb8474db439727e4236f043c015576c4b6a0c1 Mon Sep 17 00:00:00 2001 From: Andreas Troelsen Date: Sun, 4 Jul 2021 21:34:54 +0200 Subject: [PATCH] Add bStats metrics. Introduces the bStats metrics library to the plugin. This first commit contains just a single custom chart, the `store_type`, which will help figure out which stores to focus on for performance optimization and such. --- README.md | 11 ++++++++ pom.xml | 11 ++++++++ .../mobarena/stats/MobArenaStatsPlugin.java | 8 ++++++ .../stats/metrics/StoreTypeChart.java | 27 +++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 src/main/java/org/mobarena/stats/metrics/StoreTypeChart.java diff --git a/README.md b/README.md index e7a8ecc..216b639 100644 --- a/README.md +++ b/README.md @@ -190,3 +190,14 @@ The operation runs _off_ the main thread, so it should not impact performance. ## Getting Help If you run into problems or need help with something, feel free to hop on the MobArena Discord server: [Instant Invite](https://discord.gg/5tnwQvC) + + +## Metrics + +MobArenaStats collects anonymous server metrics through [bStats](https://bstats.org/). +The metrics include generic information like Minecraft version, as well as plugin-specific information like plugin version and store type. +All collected metrics are publicly available [here](https://bstats.org/plugin/bukkit/MobArenaStats/11932). + +Please note that the stats collected by the plugin itself never leave the server, and they are thus _not_ a part of the metrics collection. + +To opt out of metrics collection, edit the `plugins/bStats/config.yml` file. diff --git a/pom.xml b/pom.xml index bfb7bc4..8a879b1 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,13 @@ 1.7.31 + + + org.bstats + bstats-bukkit + 2.2.1 + + org.bukkit @@ -175,6 +182,10 @@ true false + + org.bstats + org.mobarena.stats.libs.bstats + org.jdbi org.mobarena.stats.libs.jdbi diff --git a/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java b/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java index ed27e36..868a497 100644 --- a/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java +++ b/src/main/java/org/mobarena/stats/MobArenaStatsPlugin.java @@ -2,6 +2,7 @@ package org.mobarena.stats; import com.garbagemule.MobArena.MobArena; import com.garbagemule.MobArena.commands.CommandHandler; +import org.bstats.bukkit.Metrics; import org.bukkit.command.PluginCommand; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.event.HandlerList; @@ -12,6 +13,7 @@ import org.mobarena.stats.command.ExportCommand; import org.mobarena.stats.command.GlobalStatsCommand; import org.mobarena.stats.command.ImportCommand; import org.mobarena.stats.command.PlayerStatsCommand; +import org.mobarena.stats.metrics.StoreTypeChart; import org.mobarena.stats.platform.AsyncBukkitExecutor; import org.mobarena.stats.platform.SyncBukkitExecutor; import org.mobarena.stats.session.SessionListener; @@ -79,6 +81,7 @@ public class MobArenaStatsPlugin extends JavaPlugin implements MobArenaStats { createConfigFile(); setupExecutors(); setupCommands(); + setupMetrics(); } catch (Exception up) { // If setup fails, we can't recover, so throw up throw new RuntimeException(up); @@ -131,6 +134,11 @@ public class MobArenaStatsPlugin extends JavaPlugin implements MobArenaStats { handler.register(ImportCommand.class); } + private void setupMetrics() { + Metrics metrics = new Metrics(this, 11932); + metrics.addCustomChart(new StoreTypeChart(this)); + } + private void reload() { try { createSessionStore(); diff --git a/src/main/java/org/mobarena/stats/metrics/StoreTypeChart.java b/src/main/java/org/mobarena/stats/metrics/StoreTypeChart.java new file mode 100644 index 0000000..9b6cac1 --- /dev/null +++ b/src/main/java/org/mobarena/stats/metrics/StoreTypeChart.java @@ -0,0 +1,27 @@ +package org.mobarena.stats.metrics; + +import org.bstats.charts.SimplePie; +import org.bukkit.configuration.Configuration; +import org.bukkit.configuration.ConfigurationSection; +import org.mobarena.stats.MobArenaStatsPlugin; +import org.mobarena.stats.store.StatsStore; + +public class StoreTypeChart extends SimplePie { + + public StoreTypeChart(MobArenaStatsPlugin plugin) { + super("store_type", () -> { + StatsStore store = plugin.getStatsStore(); + if (store == null) { + return null; + } + + // If the store isn't null, it means whatever type is set in + // the config-file is valid and has already been parsed, so + // we can just extract and submit it. + Configuration config = plugin.getConfig(); + ConfigurationSection section = config.getConfigurationSection("store"); + return section.getString("type"); + }); + } + +}