From 8034d8852aec2b17e1bfde20805fc027c4f76e79 Mon Sep 17 00:00:00 2001 From: Jkobs <66284145+Minzilein2003@users.noreply.github.com> Date: Thu, 10 Nov 2022 11:28:55 +0100 Subject: [PATCH] New Updater --- pom.xml | 13 ++++ .../SPIGOT/api/messages/T2Ctemplate.java | 2 +- .../SPIGOT/api/update/T2CupdateAPI.java | 31 ++++---- .../SPIGOT/api/update/T2CupdateChecker.java | 76 ++++++++++--------- .../SPIGOT/api/update/T2CupdateObject.java | 9 +-- .../SPIGOT/api/update/T2CupdateWebData.java | 31 ++++++++ .../SPIGOT/system/T2CodeLibMain.java | 2 +- 7 files changed, 106 insertions(+), 58 deletions(-) create mode 100644 src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateWebData.java diff --git a/pom.xml b/pom.xml index b8a3786..a58e9d2 100644 --- a/pom.xml +++ b/pom.xml @@ -147,5 +147,18 @@ adventure-platform-bukkit 4.1.2 + + + org.projectlombok + lombok + 1.18.24 + provided + + + + org.json + json + 20220924 + diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Ctemplate.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Ctemplate.java index 5f9084f..4aba421 100644 --- a/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Ctemplate.java +++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/messages/T2Ctemplate.java @@ -82,7 +82,7 @@ public class T2Ctemplate { public static void sendInfo(CommandSender sender, Plugin plugin, int spigotID, String discord, Boolean premiumVerified, String text) { String pluginVersion = plugin.getDescription().getVersion(); - String publicVersion = T2CupdateAPI.pluginVersions.get(plugin.getName()).publicVersion; + String publicVersion = T2CupdateAPI.pluginVersions.get(plugin.getName()).webData.getTag_name(); boolean update = !publicVersion.equalsIgnoreCase(pluginVersion); boolean player = sender instanceof Player; diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateAPI.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateAPI.java index afb48d6..932405a 100644 --- a/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateAPI.java +++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateAPI.java @@ -29,7 +29,7 @@ public class T2CupdateAPI { }.runTaskLaterAsynchronously(plugin, 20L); return; } - String publicVersion = pluginVersions.get(plugin.getName()).publicVersion; + String publicVersion = pluginVersions.get(plugin.getName()).webData.getTag_name(); String pluginVersion = plugin.getDescription().getVersion(); if (pluginVersion.equals(publicVersion)) return; new BukkitRunnable() { @@ -41,7 +41,7 @@ public class T2CupdateAPI { } public static void sendUpdateMsg(String prefix, Integer spigotID, String discord, Plugin plugin, Player player) { - String publicVersion = pluginVersions.get(plugin.getName()).publicVersion; + String publicVersion = pluginVersions.get(plugin.getName()).webData.getTag_name(); String pluginVersion = plugin.getDescription().getVersion(); if (publicVersion.equals("§4No public version found!")) { return; @@ -67,15 +67,16 @@ public class T2CupdateAPI { .replace("[plv]", pluginVersion).replace("[puv]", publicVersion).replace("[dc]", discord)); } - public static void sendUpdateMsg(String prefix, Integer spigot, String discord, Plugin plugin) { - String publicVersion = pluginVersions.get(plugin.getName()).publicVersion; + public static void sendUpdateMsg(String prefix, T2CupdateWebData data, String discord, Plugin plugin) { + String publicVersion = pluginVersions.get(plugin.getName()).webData.getTag_name(); String pluginVersion = plugin.getDescription().getVersion(); String h = "§4=========== " + prefix + " §4==========="; String s1 = ""; String s2 = "§6Your version: §c" + pluginVersion + " §7- §6Current version: §a" + publicVersion; - String s3 = "§6You can download it here: §ehttps://www.spigotmc.org/resources/" + spigot; + String s3 = "§6You can download it here: §e" + data.getUpdateurl(); String s4 = "§6You can find more information on Discord: §e" + discord; - if (publicVersion.toLowerCase().contains("dev") || publicVersion.toLowerCase().contains("beta") || publicVersion.toLowerCase().contains("snapshot")) { + if (data.isPrerelease()) { + s1 = "§6A new §4Pre-Release§6 version was found!§r"; if (publicVersion.toLowerCase().contains("dev")) { s1 = "§6A new §4DEV§6 version was found!§r"; } @@ -92,35 +93,39 @@ public class T2CupdateAPI { T2Csend.console(text); } - public static void onUpdateCheck(Plugin plugin, String prefix, int spigotID, String discord) { + public static void onUpdateCheck(Plugin plugin, String prefix, String discord, String RepoURL) { + if(!RepoURL.contains("?limit=1")){ + RepoURL = RepoURL + "?limit=1"; + } + String finalRepoURL = RepoURL; new BukkitRunnable() { @Override public void run() { - (new T2CupdateChecker((JavaPlugin) plugin, spigotID)).getVersion((update_version) -> { + (new T2CupdateChecker((JavaPlugin) plugin)).getVersion((webData) -> { T2CupdateObject update = new T2CupdateObject( plugin.getName(), plugin.getDescription().getVersion(), - update_version, + webData, false ); pluginVersions.put(plugin.getName(), update); - if (!plugin.getDescription().getVersion().equalsIgnoreCase(update_version)) { + if (!plugin.getDescription().getVersion().equalsIgnoreCase(webData.getTag_name())) { if (!update.load) { new BukkitRunnable() { @Override public void run() { update.load = true; - sendUpdateMsg(prefix, spigotID, discord, plugin); + sendUpdateMsg(prefix, webData, discord, plugin); } }.runTaskLaterAsynchronously(plugin, 600L); - } else sendUpdateMsg(prefix, spigotID, discord, plugin); + } else sendUpdateMsg(prefix, webData, discord, plugin); } else { if (!update.load){ T2Csend.console(prefix + " §2No update found."); update.load = true; } } - }, prefix, plugin.getDescription().getVersion()); + }, prefix, plugin.getDescription().getVersion(), finalRepoURL); } }.runTaskTimerAsynchronously(plugin, 0L, SelectLibConfig.getUpdateCheckTimeInterval() * 60 * 20L); } diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateChecker.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateChecker.java index 4cf9c7c..2b5376e 100644 --- a/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateChecker.java +++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateChecker.java @@ -2,62 +2,63 @@ package net.t2code.t2codelib.SPIGOT.api.update; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.net.URL; -import java.util.Scanner; +import java.net.URLConnection; import java.util.function.Consumer; public class T2CupdateChecker { private JavaPlugin plugin; - private int resourceId; - public T2CupdateChecker(JavaPlugin plugin, int resourceId) { + public T2CupdateChecker(JavaPlugin plugin) { this.plugin = plugin; - this.resourceId = resourceId; } - public void getVersion(Consumer consumer, String Prefix, String pluginVersion) { + public void getVersion(Consumer consumer, String Prefix, String pluginVersion, String URL) { if (!plugin.isEnabled()) { return; } Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> { try { - InputStream inputStream = (new URL("https://api.spigotmc.org/legacy/update.php?resource=" + this.resourceId)).openStream(); - try { - Scanner scanner = new Scanner(inputStream); - - try { - if (scanner.hasNext()) { - consumer.accept(scanner.next()); - } - } catch (Throwable var8) { - try { - scanner.close(); - } catch (Throwable var7) { - var8.addSuppressed(var7); - } - throw var8; - } - scanner.close(); - } catch (Throwable var9) { - if (inputStream != null) { - try { - inputStream.close(); - } catch (Throwable var6) { - var9.addSuppressed(var6); - } - } - throw var9; + URL url = new URL(URL); + URLConnection yc = url.openConnection(); + BufferedReader in = new BufferedReader( + new InputStreamReader( + yc.getInputStream())); + String inputLine; + String data = ""; + while ((inputLine = in.readLine()) != null) + data = inputLine; + in.close(); + data = data.substring(1, data.length() - 1); + if (data.isEmpty()) { + consumer.accept(null); + return; } - inputStream.close(); - } catch (IOException var10) { + JSONObject obj = new JSONObject(data); + String UpdateName = obj.getString("name"); + String tag_name = obj.getString("tag_name"); + String body = obj.getString("body"); + String updateurl = obj.getString("url"); + boolean prerelease = obj.getBoolean("prerelease"); + String published_at = obj.getString("published_at"); + JSONArray downloadArray = obj.getJSONArray("assets"); + String downloadURL; + if (downloadArray.isEmpty()) { + downloadURL = ""; + } else { + downloadURL = downloadArray.getJSONObject(0).getString("browser_download_url"); + } + T2CupdateWebData webData = new T2CupdateWebData(UpdateName, tag_name, body, updateurl, published_at, downloadURL, prerelease); + consumer.accept(webData); + } catch (Exception var10) { Boolean load = false; - if (T2CupdateAPI.pluginVersions.containsKey(plugin.getName())){ + if (T2CupdateAPI.pluginVersions.containsKey(plugin.getName())) { load = T2CupdateAPI.pluginVersions.get(plugin.getName()).load; } - T2CupdateObject update = new T2CupdateObject( plugin.getName(), pluginVersion, @@ -69,4 +70,5 @@ public class T2CupdateChecker { } }); } + } diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateObject.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateObject.java index 529d7ca..3bf0780 100644 --- a/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateObject.java +++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateObject.java @@ -5,19 +5,16 @@ public class T2CupdateObject { public String pluginName; public String pluginVersion; - public String publicVersion; - public String changeLog; + public T2CupdateWebData webData; public Boolean load; public T2CupdateObject(String pluginName, String pluginVersion, - String publicVersion , - String changeLog , + T2CupdateWebData webData , Boolean load) { this.pluginName = pluginName; this.pluginVersion = pluginVersion; - this.publicVersion = publicVersion; - this.changeLog = changeLog; + this.webData = webData; this.load=load; } } diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateWebData.java b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateWebData.java new file mode 100644 index 0000000..f635232 --- /dev/null +++ b/src/main/java/net/t2code/t2codelib/SPIGOT/api/update/T2CupdateWebData.java @@ -0,0 +1,31 @@ +package net.t2code.t2codelib.SPIGOT.api.update; + +import lombok.Getter; + +public class T2CupdateWebData { + @Getter + private String UpdateName; + @Getter + private String tag_name; + @Getter + private String body; + @Getter + private String updateurl; + @Getter + private String published_at; + @Getter + private String downloadURL; + @Getter + private boolean prerelease; + + public T2CupdateWebData(String updateName, String tag_name, String body, String updateurl, String published_at, String downloadURL, boolean prerelease) { + UpdateName = updateName; + this.tag_name = tag_name; + this.body = body; + this.updateurl = updateurl; + this.published_at = published_at; + this.downloadURL = downloadURL; + this.prerelease = prerelease; + } +} + diff --git a/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java b/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java index d5f9cf8..821daf3 100644 --- a/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java +++ b/src/main/java/net/t2code/t2codelib/SPIGOT/system/T2CodeLibMain.java @@ -90,7 +90,7 @@ public final class T2CodeLibMain extends JavaPlugin { SelectLibConfig.onSelect(); SelectLibMsg.onSelect(); - T2CupdateAPI.onUpdateCheck(plugin, prefix, Util.getSpigotID(), Util.getDiscord()); + T2CupdateAPI.onUpdateCheck(plugin, prefix, Util.getDiscord(), "https://git.t2code.net/api/v1/repos/JaTiTV/T2CodeLib/releases?limit=1"); Metrics.Bstats(plugin, Util.getBstatsID()); if (SelectLibConfig.getBungee()){ Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, "t2c:bcmd");