diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java index d67e5e5..f163e2c 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/SaneEconomy.java @@ -25,6 +25,7 @@ public class SaneEconomy extends JavaPlugin implements ISaneEconomy { private EconomyManager economyManager; private VaultHook vaultHook; private TransactionLogger transactionLogger; + private GithubVersionChecker versionChecker; private final Map COMMANDS = new HashMap() {{ put("balance", new BalanceCommand(SaneEconomy.this)); @@ -56,7 +57,8 @@ public class SaneEconomy extends JavaPlugin implements ISaneEconomy { getLogger().info("Not hooking into Vault because it isn't loaded."); } - getServer().getScheduler().scheduleAsyncDelayedTask(this, GithubVersionChecker::checkUpdateAvailable); + versionChecker = new GithubVersionChecker("SaneEconomyCore", this.getDescription().getVersion()); + getServer().getScheduler().scheduleAsyncDelayedTask(this, versionChecker::checkUpdateAvailable); getServer().getScheduler().runTaskTimerAsynchronously(this, () -> { economyManager.getBackend().reloadTopPlayerBalances(); @@ -118,6 +120,10 @@ public class SaneEconomy extends JavaPlugin implements ISaneEconomy { getServer().getPluginManager().disablePlugin(this); } + public GithubVersionChecker getVersionChecker() { + return versionChecker; + } + /** * Get the active EconomyManager. * @return EconomyManager diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java index dce4ba3..49a1691 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/listeners/JoinQuitListener.java @@ -38,8 +38,8 @@ public class JoinQuitListener implements Listener { } /* Update notification */ - if (player.hasPermission("saneeconomy.update-notify") && GithubVersionChecker.isUpdateAvailable()) { - MessageUtils.sendMessage(player, "An update is available! The currently-installed version is %s, but the newest available is %s. Please go to %s to update!", plugin.getDescription().getVersion(), GithubVersionChecker.getNewestVersion(), GithubVersionChecker.DOWNLOAD_URL); + if (player.hasPermission("saneeconomy.update-notify") && plugin.getVersionChecker().isUpdateAvailable()) { + MessageUtils.sendMessage(player, "An update is available! The currently-installed version is %s, but the newest available is %s. Please go to %s to update!", plugin.getDescription().getVersion(), plugin.getVersionChecker().getNewestVersion(), GithubVersionChecker.DOWNLOAD_URL); } } } diff --git a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/updates/GithubVersionChecker.java b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/updates/GithubVersionChecker.java index 4b7e574..2accc1a 100644 --- a/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/updates/GithubVersionChecker.java +++ b/SaneEconomyCore/src/main/java/org/appledash/saneeconomy/updates/GithubVersionChecker.java @@ -14,11 +14,18 @@ import org.appledash.saneeconomy.utils.WebUtils; public class GithubVersionChecker { public static final String DOWNLOAD_URL = "https://github.com/AppleDash/SaneEconomy/releases"; private static final String RELEASES_URL = "https://api.github.com/repos/AppleDash/SaneEconomy/releases"; - private static boolean updateChecked; - private static boolean updateAvailable; + private boolean updateChecked; + private boolean updateAvailable; private static String newestVersion; + private final String pluginName; + private final String currentVersion; - public static void checkUpdateAvailable() { + public GithubVersionChecker(String pluginName, String currentVersion) { + this.pluginName = pluginName; + this.currentVersion = currentVersion; + } + + public void checkUpdateAvailable() { String jsonContent = WebUtils.getContents(RELEASES_URL); JsonArray array = (JsonArray)new JsonParser().parse(jsonContent); @@ -36,6 +43,12 @@ public class GithubVersionChecker { continue; } + String releaseName = releaseObj.get("name").getAsString().split(" ")[0]; + + if (!releaseName.equalsIgnoreCase(pluginName)) { // Not for this plugin. + continue; + } + String versionStr = releaseObj.get("tag_name").getAsString(); int version = releaseToInt(versionStr); @@ -51,15 +64,15 @@ public class GithubVersionChecker { updateAvailable = newestVersion > currentVersion; } - private static int releaseToInt(String release) { + private int releaseToInt(String release) { return Integer.valueOf(release.trim().replace(".", "")); } - public static boolean isUpdateAvailable() { + public boolean isUpdateAvailable() { return updateChecked && updateAvailable; } - public static String getNewestVersion() { + public String getNewestVersion() { return newestVersion; } } diff --git a/SaneEconomyCore/src/main/resources/plugin.yml b/SaneEconomyCore/src/main/resources/plugin.yml index 8b1f5c5..21f1c29 100644 --- a/SaneEconomyCore/src/main/resources/plugin.yml +++ b/SaneEconomyCore/src/main/resources/plugin.yml @@ -49,3 +49,16 @@ permissions: saneeconomy.balancetop: description: Allows you to view the players on the server who have the most money. default: true + saneeconomy.update-notify: + description: Allows you to be notified of updates to the plugin on join. + default: op + saneeconomy.*: + children: + saneeconomy.balance: true + saneeconomy.balance.other: true + saneeconomy.ecoadmin: true + saneeconomy.pay: true + saneeconomy.admin: true + saneeconomy.balancetop: true + saneeconomy.update-notify: true + default: op