diff --git a/pom.xml b/pom.xml
index 7d54459..9434a0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,7 +15,7 @@
cc.carm.plugin
ultradepository
jar
- 1.3.3
+ 1.3.4
UltraDepository
超级仓库插件,支持设定不同物品的存储仓库。
@@ -116,6 +116,13 @@
true
+
+ cc.carm.lib
+ githubreleases4j
+ 1.2.0
+ compile
+
+
org.spigotmc
spigot-api
@@ -252,10 +259,18 @@
org.bstats
cc.carm.plugin.ultradepository.lib.bstats
+
+ org.json
+ cc.carm.plugin.ultradepository.lib.json
+
cc.carm.lib.easyplugin
cc.carm.plugin.ultradepository.lib.easyplugin
+
+ cc.carm.lib.githubreleases4j
+ cc.carm.plugin.ultradepository.lib.github
+
diff --git a/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java b/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java
index e54fa24..62ac011 100644
--- a/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java
+++ b/src/main/java/cc/carm/plugin/ultradepository/UltraDepository.java
@@ -7,6 +7,7 @@
import cc.carm.plugin.ultradepository.command.DepositoryCommand;
import cc.carm.plugin.ultradepository.configuration.PluginConfig;
import cc.carm.plugin.ultradepository.hooker.PAPIExpansion;
+import cc.carm.plugin.ultradepository.hooker.UpdateChecker;
import cc.carm.plugin.ultradepository.listener.CollectListener;
import cc.carm.plugin.ultradepository.listener.UserListener;
import cc.carm.plugin.ultradepository.manager.ConfigManager;
@@ -109,6 +110,13 @@ protected boolean initialize() {
}));
}
+ if (PluginConfig.CHECK_UPDATE.get()) {
+ log("开始检查更新...");
+ UpdateChecker.checkUpdate(this);
+ } else {
+ log("已禁用检查更新,跳过。");
+ }
+
getUserManager().loadPlayersData();
return true;
diff --git a/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginConfig.java b/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginConfig.java
index f64cada..3cca850 100644
--- a/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginConfig.java
+++ b/src/main/java/cc/carm/plugin/ultradepository/configuration/PluginConfig.java
@@ -21,6 +21,10 @@ public class PluginConfig {
"metrics", Boolean.class, true
);
+ public static final ConfigValue CHECK_UPDATE = new ConfigValue<>(
+ "check-update", Boolean.class, true
+ );
+
public static final ConfigStringCast STORAGE_METHOD = new ConfigStringCast<>(
"storage.method", StorageMethod::read, StorageMethod.YAML
);
diff --git a/src/main/java/cc/carm/plugin/ultradepository/hooker/UpdateChecker.java b/src/main/java/cc/carm/plugin/ultradepository/hooker/UpdateChecker.java
new file mode 100644
index 0000000..07c1c09
--- /dev/null
+++ b/src/main/java/cc/carm/plugin/ultradepository/hooker/UpdateChecker.java
@@ -0,0 +1,46 @@
+package cc.carm.plugin.ultradepository.hooker;
+
+import cc.carm.lib.githubreleases4j.GithubRelease;
+import cc.carm.lib.githubreleases4j.GithubReleases4J;
+import cc.carm.plugin.ultradepository.UltraDepository;
+
+import java.util.List;
+
+public class UpdateChecker {
+
+ public static void checkUpdate(UltraDepository plugin) {
+ plugin.getScheduler().runAsync(() -> {
+
+ try {
+
+ List releases = GithubReleases4J.listReleases("CarmJos", "UltraDepository");
+ if (releases.isEmpty()) throw new NullPointerException(); // 无法获取更新
+
+ String currentVersion = plugin.getDescription().getVersion();
+ int i = 0;
+
+ for (GithubRelease release : releases) {
+ if (release.getTagName().equalsIgnoreCase(currentVersion)) {
+ break;
+ }
+ i++;
+ }
+
+ if (i > 0) {
+ GithubRelease latestRelease = releases.get(0);
+ plugin.log("检查更新完成,当前已落后 " + i + " 个版本,最新版本为 &6&l" + latestRelease.getTagName() + " &r。");
+ plugin.log("最新版本下载地址&e " + latestRelease.getHTMLUrl());
+ } else {
+ plugin.log("检查更新完成,当前已是最新版本。");
+ }
+
+ } catch (Exception exception) {
+ plugin.error("检查更新失败,请您定期查看插件是否更新,避免安全问题。");
+ plugin.error("插件下载地址&e https://github.com/CarmJos/UltraDepository/releases");
+ }
+
+ });
+ }
+
+
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 4ef87ac..fe18517 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -11,6 +11,11 @@ debug: false
# 当然,您也可以选择在这里关闭,或在plugins/bStats下的配置文件中关闭。
metrics: true
+# 检查更新设定
+# 该选项用于插件判断是否要检查更新,若您不希望插件检查更新并提示您,可以选择关闭。
+# 检查更新为异步操作,绝不会影响性能与使用体验。
+check-update: true
+
# 存储相关配置
# 注意:存储配置不会通过重载指令生效,如有修改请重新启动服务器。
storage:
diff --git a/src/test/java/ReleasesTest.java b/src/test/java/ReleasesTest.java
new file mode 100644
index 0000000..d28e2fe
--- /dev/null
+++ b/src/test/java/ReleasesTest.java
@@ -0,0 +1,20 @@
+import cc.carm.lib.githubreleases4j.GithubRelease;
+import cc.carm.lib.githubreleases4j.GithubReleases4J;
+import org.junit.Test;
+
+import java.util.List;
+
+public class ReleasesTest {
+
+ @Test
+ public void onTest() {
+
+ List releases = GithubReleases4J.listReleases("CarmJos", "UltraDepository");
+
+ for (GithubRelease release : releases) {
+ System.out.println("#" + release.getID() + " (:" + release.getTagName() + ")" + " " + release.getName());
+ System.out.println("- " + release.getHTMLUrl());
+ }
+
+ }
+}