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()) {