From 4ee64950064fbfde4e6b81b732b101e90fd97653 Mon Sep 17 00:00:00 2001 From: Big Pappa Date: Mon, 15 Jun 2026 13:30:19 -0500 Subject: [PATCH] Added OP Player JoinEvent nofication when update available --- .../serveradmin/RSServerAdmin.java | 20 ++++++- .../listeners/UpdateNotificationListener.java | 55 +++++++++++++++++++ .../update/GitHubUpdateChecker.java | 21 +++++++ 3 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/rsscripting/serveradmin/listeners/UpdateNotificationListener.java diff --git a/src/main/java/com/rsscripting/serveradmin/RSServerAdmin.java b/src/main/java/com/rsscripting/serveradmin/RSServerAdmin.java index 0a37738..6534cd6 100644 --- a/src/main/java/com/rsscripting/serveradmin/RSServerAdmin.java +++ b/src/main/java/com/rsscripting/serveradmin/RSServerAdmin.java @@ -24,6 +24,7 @@ public class RSServerAdmin extends JavaPlugin { private WorldsDAO worldsDAO; private CreeperSettingsDAO creeperSettingsDAO; private MobEquipmentDropSettingsDAO equipmentDropSettingsDAO; + private GitHubUpdateChecker gitHubUpdateChecker; @Override public void onEnable() { @@ -156,6 +157,11 @@ public class RSServerAdmin extends JavaPlugin { this ); + getServer().getPluginManager().registerEvents( + new UpdateNotificationListener(), + this + ); + } catch (Exception ex) { getLogger().log( @@ -169,9 +175,12 @@ public class RSServerAdmin extends JavaPlugin { return; } - new GitHubUpdateChecker( - this - ).checkForUpdates(); + gitHubUpdateChecker = + new GitHubUpdateChecker( + this + ); + + gitHubUpdateChecker.checkForUpdates(); getLogger().info("RS-ServerAdmin enabled."); } @@ -217,5 +226,10 @@ public class RSServerAdmin extends JavaPlugin { return equipmentDropSettingsDAO; } + public GitHubUpdateChecker getGitHubUpdateChecker() { + + return gitHubUpdateChecker; + + } } \ No newline at end of file diff --git a/src/main/java/com/rsscripting/serveradmin/listeners/UpdateNotificationListener.java b/src/main/java/com/rsscripting/serveradmin/listeners/UpdateNotificationListener.java new file mode 100644 index 0000000..d718408 --- /dev/null +++ b/src/main/java/com/rsscripting/serveradmin/listeners/UpdateNotificationListener.java @@ -0,0 +1,55 @@ +package com.rsscripting.serveradmin.listeners; + +import com.rsscripting.serveradmin.RSServerAdmin; +import com.rsscripting.serveradmin.update.GitHubUpdateChecker; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +public class UpdateNotificationListener + implements Listener { + + @EventHandler + public void onPlayerJoin( + PlayerJoinEvent event + ) { + + Player player = + event.getPlayer(); + + if (!player.isOp()) { + return; + } + + GitHubUpdateChecker checker = + RSServerAdmin.getInstance() + .getGitHubUpdateChecker(); + + if (checker == null) { + return; + } + + if (!checker.isUpdateAvailable()) { + return; + } + + player.sendMessage( + ChatColor.YELLOW + + "[RS-ServerAdmin] " + + ChatColor.GOLD + + "Update Available! " + + ChatColor.GRAY + + "Current: " + + RSServerAdmin.getInstance() + .getDescription() + .getVersion() + + " Latest: " + + checker.getLatestVersionFound() + ); + + } + +} \ No newline at end of file diff --git a/src/main/java/com/rsscripting/serveradmin/update/GitHubUpdateChecker.java b/src/main/java/com/rsscripting/serveradmin/update/GitHubUpdateChecker.java index 9020c05..98401ad 100644 --- a/src/main/java/com/rsscripting/serveradmin/update/GitHubUpdateChecker.java +++ b/src/main/java/com/rsscripting/serveradmin/update/GitHubUpdateChecker.java @@ -11,6 +11,8 @@ public class GitHubUpdateChecker { private final JavaPlugin plugin; private final String pomUrl; + private volatile boolean updateAvailable = false; + private volatile String latestVersion = null; private static final String POM_URL = "https://raw.githubusercontent.com/RS-Scripting/RS-ServerAdmin/main/pom.xml"; @@ -55,12 +57,19 @@ public class GitHubUpdateChecker { latestVersion )) { + updateAvailable = false; + plugin.getLogger().info( "RS-ServerAdmin is up to date." ); } else { + updateAvailable = true; + + this.latestVersion = + latestVersion; + plugin.getLogger().warning( "Update available! Current: " + currentVersion @@ -118,4 +127,16 @@ public class GitHubUpdateChecker { } + public boolean isUpdateAvailable() { + + return updateAvailable; + + } + + public String getLatestVersionFound() { + + return latestVersion; + + } + } \ No newline at end of file