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));
+ }
+
+}