From c64da321df8ff4a939e80357f089dc0b6e05b6ae Mon Sep 17 00:00:00 2001 From: ypsdf1 Date: Mon, 28 Sep 2026 19:39:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9C=E7=A8=8BCDK=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E7=AD=89=E5=BE=85=E7=AA=97=E5=8F=A3=E5=BB=B6=E9=95=BF=E5=88=B0?= =?UTF-8?q?45=E7=A7=92=EF=BC=8C=E8=B6=85=E6=97=B6=E4=B8=8ECDK=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E5=8C=BA=E5=88=86=E6=8F=90=E7=A4=BA=EF=BC=8C?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E8=AF=AF=E6=8A=A5=E6=9C=AA=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/sdf1/Main.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/sdf1/Main.java b/src/main/java/com/sdf1/Main.java index 845e167..10374cf 100644 --- a/src/main/java/com/sdf1/Main.java +++ b/src/main/java/com/sdf1/Main.java @@ -2311,10 +2311,12 @@ public class Main extends JavaPlugin implements Listener, CommandExecutor { final String playerName = p.getName(); final String requestId = submitCdkValidation(cdkCode, playerName); - // ★ 异步线程等待结果(最多6秒) + // ★ 异步线程等待结果(最多45秒) + // Sdf1_login 侧遇到HTTP失败/锁库/解析异常会自动重排队,最多4轮, + // 所以这里要留够时间,否则远端明明匹配到了也会被判成"未匹配"。 new Thread(() -> { String[] webResult = null; - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 150; i++) { try { Thread.sleep(300); } catch (InterruptedException ignored) {} webResult = getCdkValidationResult(requestId); if (webResult != null) break; @@ -2357,8 +2359,15 @@ public class Main extends JavaPlugin implements Listener, CommandExecutor { target.sendMessage(colorize("&6&l[债券] &e&l恭喜!获得 &c&l" + amt + " &e&l债券!")); } else if (finalResult != null && "already_used".equals(finalResult[0])) { target.sendMessage(colorize("&c此兑换码已被使用")); - } else { + } else if (finalResult == null) { + // ★ 超时 ≠ 不存在:远端可能只是锁库/网络抖动,别谎报未匹配 + log("[债券] 远程验证超时 code=" + cdkCode + " player=" + playerName); + target.sendMessage(colorize("&c[债券] 远程验证超时,请稍后再试一次")); + } else if ("not_found".equals(finalResult[0])) { target.sendMessage(colorize("&c[债券] CDK不存在: " + cdkCode)); + } else { + log("[债券] 远程验证异常 code=" + cdkCode + " status=" + finalResult[0]); + target.sendMessage(colorize("&c[债券] CDK验证失败(" + finalResult[0] + "),请稍后再试")); } }); }).start();