feat: 自动检测 Jenkins 更新
This commit is contained in:
@@ -14,25 +14,17 @@ import cn.hamster3.mc.plugin.core.bukkit.page.handler.PageHandler;
|
||||
import cn.hamster3.mc.plugin.core.bukkit.page.listener.PageListener;
|
||||
import cn.hamster3.mc.plugin.core.bukkit.util.MinecraftVersion;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.common.config.YamlConfig;
|
||||
import cn.hamster3.mc.plugin.core.common.util.JenkinsUtils;
|
||||
import lombok.Getter;
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryView;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
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;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.Objects;
|
||||
@@ -67,38 +59,6 @@ public class HamsterCorePlugin extends JavaPlugin {
|
||||
return Bukkit.getScheduler().runTaskAsynchronously(instance, runnable);
|
||||
}
|
||||
|
||||
public static void showUpdate(@NotNull CommandSender sender) {
|
||||
HamsterCorePlugin.async(() -> {
|
||||
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
||||
InputStream resource = plugin.getResource("jenkins.yml");
|
||||
if (resource == null) {
|
||||
continue;
|
||||
}
|
||||
try (InputStreamReader reader = new InputStreamReader(resource, StandardCharsets.UTF_8)) {
|
||||
YamlConfig jenkinsConfig = YamlConfig.load(reader);
|
||||
String jobUrl = jenkinsConfig.getString("JOB_URL");
|
||||
if (jobUrl == null || jobUrl.equalsIgnoreCase("NONE")) {
|
||||
continue;
|
||||
}
|
||||
String buildNumberString = jenkinsConfig.getString("BUILD_NUMBER");
|
||||
if (buildNumberString == null || buildNumberString.equalsIgnoreCase("NONE")) {
|
||||
continue;
|
||||
}
|
||||
int lastStableBuild = JenkinsUtils.getLastStableBuild(jobUrl, null, null);
|
||||
int buildNumber = Integer.parseInt(buildNumberString);
|
||||
int version = lastStableBuild - buildNumber;
|
||||
if (version <= 0) {
|
||||
continue;
|
||||
}
|
||||
String pluginName = plugin.getName();
|
||||
sender.sendMessage(String.format("§a检测到服务器内安装的 %s 插件有 %d 个版本更新", pluginName, version));
|
||||
sender.sendMessage(String.format("§b下载链接: &b&n&l%s", jobUrl));
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
instance = this;
|
||||
@@ -154,7 +114,7 @@ public class HamsterCorePlugin extends JavaPlugin {
|
||||
sync(() -> {
|
||||
PointAPI.reloadPlayerPointAPIHook();
|
||||
VaultAPI.reloadVaultHook();
|
||||
showUpdate(Bukkit.getConsoleSender());
|
||||
JenkinsUpdateListener.showUpdate(Bukkit.getConsoleSender());
|
||||
});
|
||||
logger.info("仓鼠核心启动完成,总计耗时 " + time + " ms");
|
||||
}
|
||||
|
@@ -1,11 +1,21 @@
|
||||
package cn.hamster3.mc.plugin.core.bukkit.listener;
|
||||
|
||||
import cn.hamster3.mc.plugin.core.bukkit.HamsterCorePlugin;
|
||||
import cn.hamster3.mc.plugin.core.common.config.YamlConfig;
|
||||
import cn.hamster3.mc.plugin.core.common.util.JenkinsUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashSet;
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -16,6 +26,39 @@ public class JenkinsUpdateListener implements Listener {
|
||||
private JenkinsUpdateListener() {
|
||||
}
|
||||
|
||||
public static void showUpdate(@NotNull CommandSender sender) {
|
||||
HamsterCorePlugin.async(() -> {
|
||||
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
|
||||
InputStream resource = plugin.getResource("jenkins.yml");
|
||||
if (resource == null) {
|
||||
continue;
|
||||
}
|
||||
try (InputStreamReader reader = new InputStreamReader(resource, StandardCharsets.UTF_8)) {
|
||||
YamlConfig jenkinsConfig = YamlConfig.load(reader);
|
||||
String jobUrl = jenkinsConfig.getString("JOB_URL");
|
||||
if (jobUrl == null || jobUrl.equalsIgnoreCase("DEV")) {
|
||||
continue;
|
||||
}
|
||||
String buildNumberString = jenkinsConfig.getString("BUILD_NUMBER");
|
||||
if (buildNumberString == null || buildNumberString.equalsIgnoreCase("DEV")) {
|
||||
continue;
|
||||
}
|
||||
int lastStableBuild = JenkinsUtils.getLastStableBuild(jobUrl, null, null);
|
||||
int buildNumber = Integer.parseInt(buildNumberString);
|
||||
int version = lastStableBuild - buildNumber;
|
||||
if (version <= 0) {
|
||||
continue;
|
||||
}
|
||||
String pluginName = plugin.getName();
|
||||
sender.sendMessage(String.format(
|
||||
"§a检测到插件 %s 有 %d 个版本更新, 下载链接: §n§l%s", pluginName, version, jobUrl
|
||||
));
|
||||
} catch (IOException ignored) {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
@@ -25,6 +68,6 @@ public class JenkinsUpdateListener implements Listener {
|
||||
if (!SHOWED.add(player.getUniqueId())) {
|
||||
return;
|
||||
}
|
||||
HamsterCorePlugin.showUpdate(player);
|
||||
showUpdate(player);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user