From 64e919ef29e329aca0e994edb089cc828959a584 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 20 Jun 2025 16:42:29 +0200 Subject: [PATCH] fancydialogs: Add fancyanalytics integration --- plugins/fancydialogs/CHANGELOG-SNAPSHOT.md | 7 --- plugins/fancydialogs/VERSION | 2 +- .../fancydialogs/FancyDialogsPlugin.java | 5 ++ .../fancydialogs/analytics/Analytics.java | 52 +++++++++++++++++++ 4 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/analytics/Analytics.java diff --git a/plugins/fancydialogs/CHANGELOG-SNAPSHOT.md b/plugins/fancydialogs/CHANGELOG-SNAPSHOT.md index 726fb971..54d28fa4 100644 --- a/plugins/fancydialogs/CHANGELOG-SNAPSHOT.md +++ b/plugins/fancydialogs/CHANGELOG-SNAPSHOT.md @@ -2,13 +2,6 @@ Commit hash: %COMMIT_HASH% Commit message: %COMMIT_MESSAGE% -Changes: -- Removed close action -- Added console_command, player_command and send_to_server actions -- Made dialog registry and action registry accessible from the API -- Added confirmation dialogs to certain commands -- Removed html encoding for default dialogs - *(The last commit message does not always directly reflect the changes related to this version.)* Keep in mind that this is a snapshot version. Snapshot versions are **not** meant to be used in production. They are for **testing purposes only** and may contain bugs or incomplete features. Use at your own risk. \ No newline at end of file diff --git a/plugins/fancydialogs/VERSION b/plugins/fancydialogs/VERSION index 6812f812..05b19b1f 100644 --- a/plugins/fancydialogs/VERSION +++ b/plugins/fancydialogs/VERSION @@ -1 +1 @@ -0.0.3 \ No newline at end of file +0.0.4 \ No newline at end of file diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java index 2150b56f..d9e710ad 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/FancyDialogsPlugin.java @@ -1,6 +1,7 @@ package com.fancyinnovations.fancydialogs; import com.fancyinnovations.fancydialogs.actions.ActionRegistryImpl; +import com.fancyinnovations.fancydialogs.analytics.Analytics; import com.fancyinnovations.fancydialogs.api.Dialog; import com.fancyinnovations.fancydialogs.api.DialogActionRegistry; import com.fancyinnovations.fancydialogs.api.FancyDialogs; @@ -153,6 +154,10 @@ public class FancyDialogsPlugin extends JavaPlugin implements FancyDialogs { getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); + Analytics analytics = new Analytics(); + analytics.registerMetrics(); + analytics.start(); + fancyLogger.info("Successfully enabled FancyDialogs version %s".formatted(getDescription().getVersion())); } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/analytics/Analytics.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/analytics/Analytics.java new file mode 100644 index 00000000..4a172e87 --- /dev/null +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/analytics/Analytics.java @@ -0,0 +1,52 @@ +package com.fancyinnovations.fancydialogs.analytics; + +import com.fancyinnovations.fancydialogs.FancyDialogsPlugin; +import de.oliver.fancyanalytics.api.FancyAnalyticsAPI; +import de.oliver.fancyanalytics.api.metrics.MetricSupplier; +import org.bukkit.Bukkit; + +public class Analytics { + + private final FancyAnalyticsAPI api; + + public Analytics() { + api = new FancyAnalyticsAPI("ebed5533-b25e-44b3-894c-6898f64f5033", "2DNDnGE0NmQwYWE5ZTYzMDQzYTZJNoFa"); + api.getConfig().setDisableLogging(true); + } + + public void registerMetrics() { + api.registerMinecraftPluginMetrics(FancyDialogsPlugin.get()); + api.getExceptionHandler().registerLogger(FancyDialogsPlugin.get().getLogger()); + api.getExceptionHandler().registerLogger(Bukkit.getLogger()); + api.getExceptionHandler().registerLogger(FancyDialogsPlugin.get().getFancyLogger()); + + api.registerStringMetric(new MetricSupplier<>("server_size", () -> { + long onlinePlayers = Bukkit.getOnlinePlayers().size(); + + if (onlinePlayers == 0) { + return "empty"; + } + + if (onlinePlayers <= 25) { + return "small"; + } + + if (onlinePlayers <= 100) { + return "medium"; + } + + if (onlinePlayers <= 500) { + return "large"; + } + + return "very_large"; + })); + + api.registerNumberMetric(new MetricSupplier<>("amount_dialogs", () -> (double) FancyDialogsPlugin.get().getDialogRegistry().getAll().size())); + } + + public void start() { + api.initialize(); + } + +}