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()); + } + + } +}