diff --git a/src/main/java/world/bentobox/bentobox/BStats.java b/src/main/java/world/bentobox/bentobox/BStats.java index 869cc0fd2..aedf7c83a 100644 --- a/src/main/java/world/bentobox/bentobox/BStats.java +++ b/src/main/java/world/bentobox/bentobox/BStats.java @@ -8,6 +8,7 @@ import org.bstats.bukkit.Metrics; import org.bstats.charts.AdvancedPie; +import org.bstats.charts.SimpleBarChart; import org.bstats.charts.SimplePie; import org.bstats.charts.SingleLineChart; import org.bukkit.Bukkit; @@ -63,6 +64,11 @@ private void registerCustomMetrics() { // Single Line charts registerIslandsCountChart(); registerIslandsCreatedChart(); + + // Bar Charts + registerAddonsBarChart(); + registerGameModeAddonsBarChart(); + registerHooksBarChart(); } private void registerDefaultLanguageChart() { @@ -185,4 +191,44 @@ private void registerFlagsDisplayModeChart() { return values; })); } + + /** + * Sends the enabled addons (except GameModeAddons) of this server as bar chart. + * @since 1.17.1 + */ + private void registerAddonsBarChart() { + metrics.addCustomChart(new SimpleBarChart("addonsBar", () -> { + Map values = new HashMap<>(); + plugin.getAddonsManager().getEnabledAddons().stream() + .filter(addon -> !(addon instanceof GameModeAddon) && addon.getDescription().isMetrics()) + .forEach(addon -> values.put(addon.getDescription().getName(), 1)); + return values; + })); + } + + /** + * Sends the enabled GameModeAddons of this server as a bar chart. + * @since 1.17.1 + */ + private void registerGameModeAddonsBarChart() { + metrics.addCustomChart(new SimpleBarChart("gameModeAddonsBar", () -> { + Map values = new HashMap<>(); + plugin.getAddonsManager().getGameModeAddons().stream() + .filter(gameModeAddon -> gameModeAddon.getDescription().isMetrics()) + .forEach(gameModeAddon -> values.put(gameModeAddon.getDescription().getName(), 1)); + return values; + })); + } + + /** + * Sends the enabled Hooks of this server as a bar chart. + * @since 1.17.1 + */ + private void registerHooksBarChart() { + metrics.addCustomChart(new SimpleBarChart("hooksBar", () -> { + Map values = new HashMap<>(); + plugin.getHooks().getHooks().forEach(hook -> values.put(hook.getPluginName(), 1)); + return values; + })); + } }