第31批:web关闭时本地兑换失败直接返回(不进远端查询);被拉黑玩家不进入口令监听流程
This commit is contained in:
@@ -1908,7 +1908,32 @@ public class Main extends JavaPlugin implements Listener, CommandExecutor {
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* ★ 第31批(#202):反射查询 Sdf1_login 的拉黑状态。
|
||||||
|
* Sdf1_login 未安装/未启用/异常时一律视为未拉黑,不拦正常玩家。
|
||||||
|
*/
|
||||||
|
private boolean isLoginBlacklisted(Player p) {
|
||||||
|
try {
|
||||||
|
org.bukkit.plugin.Plugin login =
|
||||||
|
Bukkit.getPluginManager()
|
||||||
|
.getPlugin("Sdf1_login");
|
||||||
|
if (login == null || !login.isEnabled()) return false;
|
||||||
|
java.lang.reflect.Method m = login.getClass()
|
||||||
|
.getMethod("isBlacklisted",
|
||||||
|
org.bukkit.entity.Player.class);
|
||||||
|
return Boolean.TRUE.equals(m.invoke(login, p));
|
||||||
|
} catch (Throwable t) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void startListening(Player p) {
|
private void startListening(Player p) {
|
||||||
|
// ★ 第31批(#202):被拉黑用户不进入口令监听流程
|
||||||
|
if (isLoginBlacklisted(p)) {
|
||||||
|
p.sendMessage(colorize(
|
||||||
|
"&c[SDF1] 你已被拉黑,无法使用口令兑换"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
listening.put(p.getUniqueId(), System.currentTimeMillis());
|
listening.put(p.getUniqueId(), System.currentTimeMillis());
|
||||||
p.sendMessage(colorize("&a[SDF1] &f已开启口令监听 (15秒)"));
|
p.sendMessage(colorize("&a[SDF1] &f已开启口令监听 (15秒)"));
|
||||||
final UUID uuid = p.getUniqueId();
|
final UUID uuid = p.getUniqueId();
|
||||||
@@ -1935,6 +1960,12 @@ public class Main extends JavaPlugin implements Listener, CommandExecutor {
|
|||||||
if (msg.isEmpty() || !listening.containsKey(u)) return;
|
if (msg.isEmpty() || !listening.containsKey(u)) return;
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
stopListening(u, true);
|
stopListening(u, true);
|
||||||
|
// ★ 第31批(#202):监听期间被拉黑 → 退出监听,不进入兑换流程
|
||||||
|
if (isLoginBlacklisted(p)) {
|
||||||
|
p.sendMessage(colorize(
|
||||||
|
"&c[SDF1] 你已被拉黑,无法使用口令兑换"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
p.sendMessage(colorize("&a[SDF1] &f已拦截,比对中..."));
|
p.sendMessage(colorize("&a[SDF1] &f已拦截,比对中..."));
|
||||||
Long last = chatCd.get(u);
|
Long last = chatCd.get(u);
|
||||||
if (last != null && System.currentTimeMillis() - last < 500) return;
|
if (last != null && System.currentTimeMillis() - last < 500) return;
|
||||||
@@ -2302,6 +2333,17 @@ public class Main extends JavaPlugin implements Listener, CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ★ 第31批(#202):sdf1_login 的 web通信关闭 → 本地失败直接返回,
|
||||||
|
// 不进入「正在查询远程验证」流程(否则玩家干等45秒超时)
|
||||||
|
if ("fail:web_disabled".equals(res)) {
|
||||||
|
p.sendMessage(colorize(
|
||||||
|
"&c[债券] 远程验证未开启(web通信已关闭),"
|
||||||
|
+ "本地也没有这个兑换码"));
|
||||||
|
log("[债券] web关闭跳过远程验证: "
|
||||||
|
+ p.getName() + " code=" + code);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if ("fail:not_found".equals(res)) {
|
if ("fail:not_found".equals(res)) {
|
||||||
// ★ 本地未找到 → 存入pending队列,Sdf1_login轮询统一调度
|
// ★ 本地未找到 → 存入pending队列,Sdf1_login轮询统一调度
|
||||||
log("[债券] 本地CDK未找到,提交远程验证: " + code);
|
log("[债券] 本地CDK未找到,提交远程验证: " + code);
|
||||||
|
|||||||
Reference in New Issue
Block a user