From 69f7b4946966fc84c4d4be2e65ab47418446e72c Mon Sep 17 00:00:00 2001 From: BONNe Date: Tue, 6 Jul 2021 23:50:58 +0300 Subject: [PATCH] Implement 3 bar charts: addons, gamemodes, hooks (#1790) BStats supports sending Bar chart data, however, it does not display it via their site directly. It can be called manually, to view. PieChart does not work very well for addons and hooks. BarChart however allows viewing each addon separately. This change allows sending data to the server about bar charts. --- .../java/world/bentobox/bentobox/BStats.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) 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; + })); + } }