From fb75b4d95f8c93ecc5ec5fe31168dbdb5532170d Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Mon, 18 Mar 2024 16:49:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0=E6=97=B6=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +- build.gradle.kts | 2 +- .../plugin/core/bukkit/HamsterCorePlugin.java | 4 +- .../core/common/util/UpdateCheckUtils.java | 103 +++++++++--------- 4 files changed, 60 insertions(+), 57 deletions(-) diff --git a/README.md b/README.md index 2d09797..f864603 100644 --- a/README.md +++ b/README.md @@ -26,9 +26,9 @@ repositories { dependencies { // 对于 Bukkit 插件 - compileOnly("cn.hamster3.mc.plugin:core-bukkit:1.3.2") + compileOnly("cn.hamster3.mc.plugin:core-bukkit:1.3.3-SNAPSHOT") // 对于 BungeeCord 插件 - compileOnly("cn.hamster3.mc.plugin:core-bungee:1.3.2") + compileOnly("cn.hamster3.mc.plugin:core-bungee:1.3.3-SNAPSHOT") } ``` @@ -54,13 +54,13 @@ dependencies { cn.hamster3.mc.plugin core-bukkit - 1.3.2 + 1.3.3-SNAPSHOT cn.hamster3.mc.plugin core-bungee - 1.3.2 + 1.3.3-SNAPSHOT diff --git a/build.gradle.kts b/build.gradle.kts index f523142..d45a607 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "cn.hamster3.mc.plugin" -version = "1.3.2" +version = "1.3.3-SNAPSHOT" subprojects { apply { diff --git a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java index 5f848b0..37e1f9c 100644 --- a/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java +++ b/core-bukkit/src/main/java/cn/hamster3/mc/plugin/core/bukkit/HamsterCorePlugin.java @@ -27,7 +27,6 @@ import org.bukkit.scheduler.BukkitTask; import org.jetbrains.annotations.NotNull; import java.io.File; -import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; @@ -127,7 +126,8 @@ public class HamsterCorePlugin extends JavaPlugin { YamlConfig config = YamlConfig.load(reader); UpdateCheckUtils.showUpdate(plugin.getName(), config, Bukkit.getConsoleSender()::sendMessage); } - } catch (IOException ignored) { + } catch (Exception e) { + e.printStackTrace(); } } }); diff --git a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/UpdateCheckUtils.java b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/UpdateCheckUtils.java index d793821..bed8a31 100644 --- a/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/UpdateCheckUtils.java +++ b/core-common/src/main/java/cn/hamster3/mc/plugin/core/common/util/UpdateCheckUtils.java @@ -14,6 +14,9 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; public final class UpdateCheckUtils { private static final JsonParser JSON_PARSER = new JsonParser(); @@ -21,59 +24,59 @@ public final class UpdateCheckUtils { private UpdateCheckUtils() { } - public static void showUpdate(@NotNull String pluginName, @NotNull ConfigSection config, @NotNull UpdateReceiver sender) { + public static void showUpdate(@NotNull String pluginName, @NotNull ConfigSection config, @NotNull UpdateReceiver sender) throws IOException { String version = config.getString("version"); if (version == null) { return; } String checkType = config.getString("CHECK_TYPE", ""); - try { - switch (checkType) { - case "GITEA_RELEASES": { - String baseUrl = config.getString("GIT_BASE_URL"); - String gitRepo = config.getString("GIT_REPO"); - String downloadUrl = config.getString("DOWNLOAD_URL"); - if (baseUrl == null || gitRepo == null || downloadUrl == null) { - return; - } - String gitToken = config.getString("GIT_TOKEN"); - String lastRelease = getGiteaLastRelease(baseUrl, gitRepo, gitToken); - if (lastRelease == null) { - break; - } - if (lastRelease.compareToIgnoreCase(version) <= 0) { - break; - } - sender.sendMessage(String.format("§a插件 §l%s§a 发布了新版本 %s", pluginName, lastRelease)); - sender.sendMessage(String.format("§b下载链接: §n%s", downloadUrl)); - break; - } - case "GITLAB_RELEASES": { - String baseUrl = config.getString("GIT_BASE_URL"); - String gitRepo = config.getString("GIT_REPO"); - String downloadUrl = config.getString("DOWNLOAD_URL"); - if (baseUrl == null || gitRepo == null || downloadUrl == null) { - return; - } - String gitToken = config.getString("GIT_TOKEN"); - int projectID = getGitlabProjectID(baseUrl, gitRepo, gitToken); - if (projectID < 0) { - break; - } - String lastRelease = getGitlabLastRelease(baseUrl, projectID, gitToken); - if (lastRelease == null) { - break; - } - if (lastRelease.compareToIgnoreCase(version) <= 0) { - break; - } - sender.sendMessage(String.format("§a插件 §l%s§a 发布了新版本 %s", pluginName, lastRelease)); - sender.sendMessage(String.format("§b下载链接: §n%s", downloadUrl)); - break; - } - } - } catch (Exception ignored) { + String baseUrl = config.getString("GIT_BASE_URL"); + String gitRepo = config.getString("GIT_REPO"); + String downloadUrl = config.getString("DOWNLOAD_URL"); + if (baseUrl == null || gitRepo == null || downloadUrl == null) { + return; } + String gitToken = config.getString("GIT_TOKEN"); + String lastRelease = null; + switch (checkType) { + case "GITEA_RELEASES": { + lastRelease = getGiteaLastRelease(baseUrl, gitRepo, gitToken); + break; + } + case "GITLAB_RELEASES": { + int projectID = getGitlabProjectID(baseUrl, gitRepo, gitToken); + if (projectID < 0) { + break; + } + lastRelease = getGitlabLastRelease(baseUrl, projectID, gitToken); + break; + } + } + if (lastRelease == null) { + return; + } + if (compareVersion(version, lastRelease) <= 0) { + return; + } + sender.sendMessage(String.format("§a插件 §l%s§a 发布了新版本 %s", pluginName, lastRelease)); + sender.sendMessage(String.format("§b下载链接: §n%s", downloadUrl)); + } + + public static int compareVersion(@NotNull String version1, String version2) { + List collect1 = Arrays.stream(version1.split("[+-]")[0].split("\\.")).map(Integer::parseInt).collect(Collectors.toList()); + List collect2 = Arrays.stream(version2.split("[+-]")[0].split("\\.")).map(Integer::parseInt).collect(Collectors.toList()); + int max = Math.max(collect1.size(), collect2.size()); + for (int i = 0; i < max; i++) { + int v1 = i < collect1.size() ? collect1.get(i) : 0; + int v2 = i < collect2.size() ? collect2.get(i) : 0; + if (v1 > v2) { + return 1; + } + if (v1 < v2) { + return -1; + } + } + return 0; } @Nullable @@ -103,12 +106,12 @@ public final class UpdateCheckUtils { } public static int getGitlabProjectID(@NotNull String baseUrl, @NotNull String repo, @Nullable String token) throws IOException { - URL url = new URL("https://" + baseUrl + "/api/v4/projects?search=" + repo); + URL url = new URL(baseUrl + "/api/v4/projects?search=" + repo); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.setRequestMethod("GET"); if (token != null) { - connection.setRequestProperty("PRIVATE-TOKEN", "token " + token); + connection.setRequestProperty("PRIVATE-TOKEN", token); } connection.connect(); try (InputStream stream = connection.getInputStream()) { @@ -130,7 +133,7 @@ public final class UpdateCheckUtils { connection.setDoInput(true); connection.setRequestMethod("GET"); if (token != null) { - connection.setRequestProperty("Authorization", "token " + token); + connection.setRequestProperty("PRIVATE-TOKEN", token); } connection.connect(); try (InputStream stream = connection.getInputStream()) {