From 11eb9229ee0c121f66f8256ffcf7cc2666f5fb66 Mon Sep 17 00:00:00 2001 From: ypsdf1 Date: Mon, 8 Jun 2026 13:12:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20BaoTa=E7=AC=AC=E4=B8=89=E8=B7=AF?= =?UTF-8?q?=E5=A4=87=E9=80=89=E6=9B=B4=E6=96=B0=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Main: 添加BaoTa HTML第三路备选通道,GitHub/Gitee限流后自动降级 --- .idea/misc.xml | 2 +- pom.xml | 8 +-- src/main/java/com/CY/Main.java | 95 ++++++++++++++++++++++++++++++++-- 3 files changed, 96 insertions(+), 9 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 2523392..deb29cf 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -13,7 +13,7 @@ - + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 7e14b0e..2627ef9 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ jar - 21 + 25 UTF-8 @@ -46,10 +46,10 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.14.0 - 21 - 21 + 25 + 25 UTF-8 diff --git a/src/main/java/com/CY/Main.java b/src/main/java/com/CY/Main.java index 552235f..04e2bef 100644 --- a/src/main/java/com/CY/Main.java +++ b/src/main/java/com/CY/Main.java @@ -378,6 +378,10 @@ public class Main extends JavaPlugin private static final String DL_GE = "https://gitee.com/nihaoshidifu/cy_beibao/releases"; + // 第三路备选:宝塔静态HTML + private static final String FALLBACK_HTML = + "https://caoyuan.ypshidifu.cn/update_check.html"; + private static final Material[] LOGO_OPTIONS = { Material.DIAMOND, Material.GOLD_INGOT, Material.EMERALD, Material.NETHERITE_INGOT, @@ -2216,9 +2220,10 @@ public String onSdf1GetShopItems() { con.setReadTimeout(5000); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " - + "(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + + "(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"); con.setRequestProperty("Accept", "*/*"); - con.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9"); + con.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8"); + con.setRequestProperty("Connection", "keep-alive"); BufferedReader br = new BufferedReader( new InputStreamReader(con.getInputStream())); StringBuilder sb = new StringBuilder(); @@ -2293,14 +2298,96 @@ public String onSdf1GetShopItems() { applyUpdate(res[0], res[1], bDl, manual, bName); return; } - Bukkit.getConsoleSender().sendMessage("§a[CY_beibao] §c[更新] 双路均失败"); - if (manual != null) manual.sendMessage("§c[CY_beibao] [更新] §f检查失败"); + // ★ 双路均失败,尝试第三路备选(宝塔静态HTML) + getLogger().info("[CY_beibao] GitHub/Gitee 均失败,尝试第三路备选 BaoTa..."); + String[] fbResult = tryFallbackChannel(); + if (fbResult != null) { + Bukkit.getConsoleSender().sendMessage("§a[CY_beibao] §e[更新] 第三路备选 BaoTa 检查成功: " + fbResult[0]); + applyUpdate(fbResult[0], fbResult[1], DL_GH, manual, "BaoTa"); + return; + } + Bukkit.getConsoleSender().sendMessage("§a[CY_beibao] §c[更新] 三路均失败"); + if (manual != null) manual.sendMessage("§c[CY_beibao] [更新] §f检查失败(含宝塔备选)"); } catch (Exception e) { getLogger().warning("[更新] " + e.getMessage()); } }).start(); } + /** + * 第三路备选:从宝塔静态HTML解析版本信息 + * HTML中用 块 + String html = sb.toString(); + int start = html.indexOf(""); + if (start < 0 || end < 0 || end <= start) { + getLogger().warning("[更新] BaoTa: 无法解析更新数据块"); + return null; + } + String block = html.substring(start, end); + + // ★ 去除 Cloudflare 注入的 CDN-CGI 链接(...) + block = block.replaceAll("]*>[^<]*", ""); + + // 逐行查找匹配 CY_beibao 的记录 + String[] lines = block.split("\n"); + for (String l : lines) { + l = l.trim(); + // 跳过空行、注释标记行、HTML注入标签 + if (l.isEmpty() || l.startsWith("