From c325317153de1327ae3ff26f8764aa382e89111d Mon Sep 17 00:00:00 2001 From: Andreas Troelsen Date: Mon, 14 May 2018 21:11:25 +0200 Subject: [PATCH] Add bStats metrics. Metrics will greatly help the development process in terms of finding out which server versions people are running, as well as which features they are using. For now, we check to see how widespread Vault is, and how many arenas and classes people have. Advanced bar charts are, at the time of this commit, not supported in the bStats dashboard. When they are supported again, we can look into usage statistics for specific settings and features. --- pom.xml | 36 +++++++++++++++++++ .../com/garbagemule/MobArena/MobArena.java | 14 ++++++++ .../MobArena/metrics/ArenaCountChart.java | 18 ++++++++++ .../MobArena/metrics/ClassCountChart.java | 19 ++++++++++ .../MobArena/metrics/VaultChart.java | 12 +++++++ 5 files changed, 99 insertions(+) create mode 100644 src/main/java/com/garbagemule/MobArena/metrics/ArenaCountChart.java create mode 100644 src/main/java/com/garbagemule/MobArena/metrics/ClassCountChart.java create mode 100644 src/main/java/com/garbagemule/MobArena/metrics/VaultChart.java diff --git a/pom.xml b/pom.xml index 2ed375a..e35fcb7 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,30 @@ MobArena + + + org.apache.maven.plugins + maven-shade-plugin + 3.1.0 + + false + true + + + org.bstats + com.garbagemule.MobArena.metrics + + + + + + package + + shade + + + + @@ -54,6 +78,11 @@ vault-repo http://nexus.hc.to/content/repositories/pub_releases + + + bstats-repo + http://repo.bstats.org/content/repositories/releases/ + @@ -73,6 +102,13 @@ provided + + org.bstats + bstats-bukkit + 1.2 + compile + + com.nisovin diff --git a/src/main/java/com/garbagemule/MobArena/MobArena.java b/src/main/java/com/garbagemule/MobArena/MobArena.java index d990f05..60f950d 100644 --- a/src/main/java/com/garbagemule/MobArena/MobArena.java +++ b/src/main/java/com/garbagemule/MobArena/MobArena.java @@ -5,11 +5,15 @@ import com.garbagemule.MobArena.framework.Arena; import com.garbagemule.MobArena.framework.ArenaMaster; import com.garbagemule.MobArena.listeners.MAGlobalListener; import com.garbagemule.MobArena.listeners.MagicSpellsListener; +import com.garbagemule.MobArena.metrics.ArenaCountChart; +import com.garbagemule.MobArena.metrics.ClassCountChart; +import com.garbagemule.MobArena.metrics.VaultChart; import com.garbagemule.MobArena.things.ThingManager; import com.garbagemule.MobArena.util.VersionChecker; import com.garbagemule.MobArena.util.config.ConfigUtils; import com.garbagemule.MobArena.waves.ability.AbilityManager; import net.milkbowl.vault.economy.Economy; +import org.bstats.bukkit.Metrics; import org.bukkit.ChatColor; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; @@ -87,6 +91,9 @@ public class MobArena extends JavaPlugin // Register event listeners registerListeners(); + // Setup bStats metrics + setupMetrics(); + // Announce enable! getLogger().info("v" + this.getDescription().getVersion() + " enabled."); @@ -224,6 +231,13 @@ public class MobArena extends JavaPlugin getLogger().info("MagicSpells found, loading config-file."); this.getServer().getPluginManager().registerEvents(new MagicSpellsListener(this), this); } + + private void setupMetrics() { + Metrics metrics = new Metrics(this); + metrics.addCustomChart(new VaultChart(this)); + metrics.addCustomChart(new ArenaCountChart(this)); + metrics.addCustomChart(new ClassCountChart(this)); + } private void loadAbilities() { File dir = new File(this.getDataFolder(), "abilities"); diff --git a/src/main/java/com/garbagemule/MobArena/metrics/ArenaCountChart.java b/src/main/java/com/garbagemule/MobArena/metrics/ArenaCountChart.java new file mode 100644 index 0000000..b415cda --- /dev/null +++ b/src/main/java/com/garbagemule/MobArena/metrics/ArenaCountChart.java @@ -0,0 +1,18 @@ +package com.garbagemule.MobArena.metrics; + +import com.garbagemule.MobArena.MobArena; +import org.bstats.bukkit.Metrics; + +public class ArenaCountChart extends Metrics.SimplePie { + + public ArenaCountChart(MobArena plugin) { + super("arena_count", () -> { + int count = plugin.getArenaMaster().getArenas().size(); + if (count < 10) { + return String.valueOf(count); + } + return "10+"; + }); + } + +} diff --git a/src/main/java/com/garbagemule/MobArena/metrics/ClassCountChart.java b/src/main/java/com/garbagemule/MobArena/metrics/ClassCountChart.java new file mode 100644 index 0000000..46f78c8 --- /dev/null +++ b/src/main/java/com/garbagemule/MobArena/metrics/ClassCountChart.java @@ -0,0 +1,19 @@ +package com.garbagemule.MobArena.metrics; + +import com.garbagemule.MobArena.MobArena; +import org.bstats.bukkit.Metrics; + +public class ClassCountChart extends Metrics.SimplePie { + + public ClassCountChart(MobArena plugin) { + super("class_count", () -> { + // We don't count "My Items", so subtract 1 + int count = plugin.getArenaMaster().getClasses().size() - 1; + if (count < 10) { + return String.valueOf(count); + } + return "10+"; + }); + } + +} diff --git a/src/main/java/com/garbagemule/MobArena/metrics/VaultChart.java b/src/main/java/com/garbagemule/MobArena/metrics/VaultChart.java new file mode 100644 index 0000000..3ad5be3 --- /dev/null +++ b/src/main/java/com/garbagemule/MobArena/metrics/VaultChart.java @@ -0,0 +1,12 @@ +package com.garbagemule.MobArena.metrics; + +import com.garbagemule.MobArena.MobArena; +import org.bstats.bukkit.Metrics; + +public class VaultChart extends Metrics.SimplePie { + + public VaultChart(MobArena plugin) { + super("uses_vault", () -> plugin.getEconomy() != null ? "Yes" : "No"); + } + +}