From 9e35c457ae2d67cfba9132d41cb9d9584ff16ae7 Mon Sep 17 00:00:00 2001 From: CarmJos Date: Wed, 2 Mar 2022 20:41:22 +0800 Subject: [PATCH] =?UTF-8?q?[1.3.0]=20=E6=B7=BB=E5=8A=A0=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 34 ++++++++++++++- pom.xml | 43 +++++++++++++++++-- .../java/cc/carm/plugin/timereward/Main.java | 17 ++++++++ .../configuration/PluginConfig.java | 8 ++++ .../timereward/hooker/GHUpdateChecker.java | 34 +++++++++++++++ src/main/resources/config.yml | 10 +++++ 6 files changed, 142 insertions(+), 4 deletions(-) create mode 100644 src/main/java/cc/carm/plugin/timereward/hooker/GHUpdateChecker.java diff --git a/README.md b/README.md index ba35dc3..7023f8a 100644 --- a/README.md +++ b/README.md @@ -78,4 +78,36 @@ ### 消息配置文件 ([messages.yml](src/main/java/cc/carm/plugin/timereward/configuration/PluginMessages.java)) -详见代码源文件,将在首次启动时生成配置。 \ No newline at end of file +详见代码源文件,将在首次启动时生成配置。 + +## 支持与捐赠 + +若您觉得本插件做的不错,您可以捐赠支持我! + +感谢您成为开源项目的支持者! + + + +## 开源协议 +本项目源码采用 [GNU General Public License v3.0](https://opensource.org/licenses/GPL-3.0) 开源协议。 + +
+关于 GPL 协议 + +> GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利: +> +> #### 可自由复制 +> 你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。 +> #### 可自由分发 +> 在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。 +> #### 可以用来盈利 +> 你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。 +> #### 可自由修改 +> 如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。 +> +> 需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下 @PierreJoye 写的 Practical Guide to GPL Compliance 一文。使用 GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。 +> +> *以上文字来自 [五种开源协议GPL,LGPL,BSD,MIT,Apache](https://www.oschina.net/question/54100_9455) 。* +
+ + diff --git a/pom.xml b/pom.xml index 938f7d3..1d720f9 100644 --- a/pom.xml +++ b/pom.xml @@ -14,13 +14,17 @@ cc.carm.plugin timereward - 1.2.1 + 1.3.0 jar TimeReward 区域保护插件,将不符合条件的玩家弹出区域,基于EasyPlugin实现。 https://github.com/CarmJos/TimeReward + + GitHub Issues + https://github.com/CarmJos/TimeReward/issues + GitHub Actions @@ -31,6 +35,14 @@ https://github.com/CarmJos/TimeReward/releases + + + CarmJos + Carm Jos + carm@carm.cc + https://work.carm.cc + + @@ -81,10 +93,26 @@ easyplugin-configuration ${easyplugin.version} compile - true + + cc.carm.lib + githubreleases4j + 1.3.1 + compile + true + + + + org.bstats + bstats-bukkit + 3.0.0 + compile + true + + + org.spigotmc spigot-api @@ -106,6 +134,7 @@ provided + junit junit @@ -207,7 +236,15 @@ cc.carm.lib - cc.carm.plugin.timereward.lib + cc.carm.plugin.moeteleport.lib + + + org.bstats + cc.carm.plugin.moeteleport.lib.bstats + + + org.json + cc.carm.plugin.moeteleport.lib.json diff --git a/src/main/java/cc/carm/plugin/timereward/Main.java b/src/main/java/cc/carm/plugin/timereward/Main.java index 310a920..d2c1e13 100644 --- a/src/main/java/cc/carm/plugin/timereward/Main.java +++ b/src/main/java/cc/carm/plugin/timereward/Main.java @@ -6,12 +6,14 @@ import cc.carm.lib.easyplugin.utils.MessageUtils; import cc.carm.plugin.timereward.command.TimeRewardCommand; import cc.carm.plugin.timereward.configuration.PluginConfig; import cc.carm.plugin.timereward.database.DataManager; +import cc.carm.plugin.timereward.hooker.GHUpdateChecker; import cc.carm.plugin.timereward.hooker.PAPIExpansion; import cc.carm.plugin.timereward.listener.UserListener; import cc.carm.plugin.timereward.manager.ConfigManager; import cc.carm.plugin.timereward.manager.RewardManager; import cc.carm.plugin.timereward.manager.UserManager; import cc.carm.plugin.timereward.util.JarResourceUtils; +import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; public class Main extends EasyPlugin { @@ -22,6 +24,8 @@ public class Main extends EasyPlugin { instance = this; } + private GHUpdateChecker checker; + protected DataManager dataManager; protected ConfigManager configManager; protected UserManager userManager; @@ -70,6 +74,19 @@ public class Main extends EasyPlugin { log("检测到未安装PlaceholderAPI,跳过变量注册。"); } + if (PluginConfig.METRICS.get()) { + info("启用统计数据..."); + Metrics metrics = new Metrics(this, 14505); + } + + if (PluginConfig.CHECK_UPDATE.get()) { + info("开始检查更新..."); + this.checker = new GHUpdateChecker("CarmJos", "TimeReward"); + getScheduler().runAsync(() -> this.checker.checkUpdate(Main.this.getDescription().getVersion())); + } else { + info("已禁用检查更新,跳过。"); + } + return true; } diff --git a/src/main/java/cc/carm/plugin/timereward/configuration/PluginConfig.java b/src/main/java/cc/carm/plugin/timereward/configuration/PluginConfig.java index 35c5790..e259899 100644 --- a/src/main/java/cc/carm/plugin/timereward/configuration/PluginConfig.java +++ b/src/main/java/cc/carm/plugin/timereward/configuration/PluginConfig.java @@ -14,6 +14,14 @@ public class PluginConfig { "debug", Boolean.class, false ); + public static final ConfigValue METRICS = new ConfigValue<>( + "metrics", Boolean.class, true + ); + + public static final ConfigValue CHECK_UPDATE = new ConfigValue<>( + "check-update", Boolean.class, true + ); + public static final ConfigSectionCast> REWARDS = new ConfigSectionCast<>( "rewards", TimeRewardAPI.getRewardManager()::readRewards, new LinkedHashMap<>() ); diff --git a/src/main/java/cc/carm/plugin/timereward/hooker/GHUpdateChecker.java b/src/main/java/cc/carm/plugin/timereward/hooker/GHUpdateChecker.java new file mode 100644 index 0000000..dbc2931 --- /dev/null +++ b/src/main/java/cc/carm/plugin/timereward/hooker/GHUpdateChecker.java @@ -0,0 +1,34 @@ +package cc.carm.plugin.timereward.hooker; + +import cc.carm.lib.githubreleases4j.GithubReleases4J; +import cc.carm.plugin.timereward.Main; + +public class GHUpdateChecker { + + private final String owner; + private final String repo; + + public GHUpdateChecker(String owner, String repo) { + this.owner = owner; + this.repo = repo; + } + + public void checkUpdate(String currentVersion) { + Integer behindVersions = GithubReleases4J.getVersionBehind(owner, repo, currentVersion); + String downloadURL = GithubReleases4J.getReleasesURL(owner, repo); + if (behindVersions == null) { + Main.severe("检查更新失败,请您定期查看插件是否更新,避免安全问题。"); + Main.severe("下载地址 " + downloadURL); + } else if (behindVersions == 0) { + Main.info("检查完成,当前已是最新版本。"); + } else if (behindVersions > 0) { + Main.info("发现新版本! 目前已落后 " + behindVersions + " 个版本。"); + Main.info("最新版下载地址 " + downloadURL); + } else { + Main.severe("检查更新失败! 当前版本未知,请您使用原生版本以避免安全问题。"); + Main.severe("最新版下载地址 " + downloadURL); + } + } + + +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 969f8d4..fd0994e 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -5,6 +5,16 @@ version: ${project.version} debug: false +# 统计数据设定 +# 该选项用于帮助开发者统计插件版本与使用情况,且绝不会影响性能与使用体验。 +# 当然,您也可以选择在这里关闭,或在plugins/bStats下的配置文件中关闭。 +metrics: true + +# 检查更新设定 +# 该选项用于插件判断是否要检查更新,若您不希望插件检查更新并提示您,可以选择关闭。 +# 检查更新为异步操作,绝不会影响性能与使用体验。 +check-update: true + database: # 数据库驱动路径,默认为 MySQL