fancyholograms v3: Add plugin version update check

This commit is contained in:
Oliver
2025-09-17 21:52:50 +02:00
parent 6f7741e82c
commit 92482ea52a
2 changed files with 51 additions and 2 deletions

View File

@@ -212,6 +212,7 @@ public final class FancyHologramsPlugin extends JavaPlugin implements FancyHolog
metrics.register();
metrics.registerLegacy();
metrics.checkIfPluginVersionUpdated();
traitRegistry.register(DebugTrait.class);
traitRegistry.register(MultiplePagesTrait.class);

View File

@@ -1,13 +1,20 @@
package com.fancyinnovations.fancyholograms.metrics;
import com.fancyinnovations.fancyholograms.api.HologramRegistry;
import com.fancyinnovations.fancyholograms.main.FancyHologramsPlugin;
import de.oliver.fancyanalytics.api.FancyAnalyticsAPI;
import de.oliver.fancyanalytics.api.metrics.MetricSupplier;
import de.oliver.fancyanalytics.logger.ExtendedFancyLogger;
import com.fancyinnovations.fancyholograms.api.HologramRegistry;
import com.fancyinnovations.fancyholograms.main.FancyHologramsPlugin;
import de.oliver.fancyanalytics.sdk.events.Event;
import de.oliver.fancylib.Metrics;
import de.oliver.fancylib.VersionConfig;
import org.bukkit.Bukkit;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.HashMap;
public class FHMetrics {
private ExtendedFancyLogger logger;
@@ -78,6 +85,47 @@ public class FHMetrics {
metrics.addCustomChart(new Metrics.SimplePie("using_development_build", () -> FancyHologramsPlugin.get().getVersionConfig().isDevelopmentBuild() ? "Yes" : "No"));
}
public void checkIfPluginVersionUpdated() {
VersionConfig versionConfig = FancyHologramsPlugin.get().getVersionConfig();
String currentVersion = versionConfig.getVersion();
String lastVersion = "N/A";
File versionFile = new File(FancyHologramsPlugin.get().getDataFolder(), "version.yml");
if (!versionFile.exists()) {
try {
Files.write(versionFile.toPath(), currentVersion.getBytes());
} catch (IOException e) {
logger.warn("Could not write version file.");
return;
}
} else {
try {
lastVersion = new String(Files.readAllBytes(versionFile.toPath()));
} catch (IOException e) {
logger.warn("Could not read version file.");
return;
}
}
if (!lastVersion.equals(currentVersion)) {
logger.info("Plugin has been updated from version " + lastVersion + " to " + currentVersion + ".");
fancyAnalytics.sendEvent(
new Event("PluginVersionUpdated", new HashMap<>())
.withProperty("from", lastVersion)
.withProperty("to", currentVersion)
.withProperty("commit_hash", versionConfig.getCommitHash())
.withProperty("channel", versionConfig.getChannel())
.withProperty("platform", versionConfig.getPlatform())
);
try {
Files.write(versionFile.toPath(), currentVersion.getBytes());
} catch (IOException e) {
logger.warn("Could not write version file.");
}
}
}
public FancyAnalyticsAPI getFancyAnalytics() {
return fancyAnalytics;
}