From 472aeda2f84498bd585994a0014d50ffe398db42 Mon Sep 17 00:00:00 2001 From: EpicKnarvik97 Date: Sat, 25 Mar 2023 02:18:05 +0100 Subject: [PATCH] Implements BStats statistics --- pom.xml | 6 +++ .../java/net/knarcraft/stargate/Stargate.java | 3 ++ .../stargate/utility/BStatsHelper.java | 54 +++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 src/main/java/net/knarcraft/stargate/utility/BStatsHelper.java diff --git a/pom.xml b/pom.xml index 9409e53..a5f163d 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,12 @@ 1.1 compile + + org.bstats + bstats-bukkit + 3.0.1 + compile + diff --git a/src/main/java/net/knarcraft/stargate/Stargate.java b/src/main/java/net/knarcraft/stargate/Stargate.java index 7e8f62c..53ca704 100644 --- a/src/main/java/net/knarcraft/stargate/Stargate.java +++ b/src/main/java/net/knarcraft/stargate/Stargate.java @@ -23,6 +23,7 @@ import net.knarcraft.stargate.portal.PortalRegistry; import net.knarcraft.stargate.thread.BlockChangeThread; import net.knarcraft.stargate.thread.ChunkUnloadThread; import net.knarcraft.stargate.thread.StarGateThread; +import net.knarcraft.stargate.utility.BStatsHelper; import org.bukkit.Server; import org.bukkit.command.PluginCommand; import org.bukkit.configuration.file.FileConfiguration; @@ -367,6 +368,8 @@ public class Stargate extends JavaPlugin { //Check for any available updates UpdateChecker.checkForUpdate(this, "https://api.spigotmc.org/legacy/update.php?resource=87978", Stargate::getPluginVersion, Stargate::setUpdateAvailable); + + BStatsHelper.initialize(this); } /** diff --git a/src/main/java/net/knarcraft/stargate/utility/BStatsHelper.java b/src/main/java/net/knarcraft/stargate/utility/BStatsHelper.java new file mode 100644 index 0000000..1372507 --- /dev/null +++ b/src/main/java/net/knarcraft/stargate/utility/BStatsHelper.java @@ -0,0 +1,54 @@ +package net.knarcraft.stargate.utility; + +import net.knarcraft.stargate.Stargate; +import net.knarcraft.stargate.config.ConfigOption; +import net.knarcraft.stargate.portal.PortalHandler; +import net.knarcraft.stargate.portal.property.gate.GateHandler; +import org.bstats.bukkit.Metrics; +import org.bstats.charts.SimplePie; +import org.bstats.charts.SingleLineChart; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.List; +import java.util.Map; + +/** + * A helper for dealing with BStats + */ +public final class BStatsHelper { + + private static boolean hasBeenInitialized = false; + + private BStatsHelper() { + + } + + /** + * Initializes BStats + * + * @param plugin

The plugin to initialize BStats for

+ */ + public static void initialize(JavaPlugin plugin) { + if (hasBeenInitialized) { + throw new IllegalArgumentException("BStats initialized twice"); + } else { + hasBeenInitialized = true; + } + + int pluginId = 10451; + Metrics metrics = new Metrics(plugin, pluginId); + + Map configValues = Stargate.getStargateConfig().getConfigOptions(); + Map> portalNetworks = PortalHandler.getAllPortalNetworks(); + int totalPortals = 0; + for (List portals : portalNetworks.values()) { + totalPortals += portals.size(); + } + + metrics.addCustomChart(new SimplePie("language", () -> (String) configValues.get(ConfigOption.LANGUAGE))); + metrics.addCustomChart(new SimplePie("gateformats", () -> String.valueOf(GateHandler.getGateCount()))); + int finalTotalPortals = totalPortals; + metrics.addCustomChart(new SingleLineChart("gatesv3", () -> finalTotalPortals)); + } + +}