第57批续3:登录推送补全+ban命令拦截+管理员广播
- LoginManager.finishPasswordLogin 补 pushLoginVerified(/login 统一收口推送 login_verified=1) - Main: /delete ban 拦截(ban 不是玩家账号名);confirm/cancel ban 加 hasBanPending 检查 - WebManager: broadcastToAdmins 方法 + enterBanPendingMode 缺口较大时给在线管理员发 CLI 通知
This commit is contained in:
@@ -343,6 +343,10 @@ public class LoginManager {
|
|||||||
// ★ 记录Java手动登录:5分钟内重连可直接放行(检查点1)
|
// ★ 记录Java手动登录:5分钟内重连可直接放行(检查点1)
|
||||||
if (plugin.webManager != null) {
|
if (plugin.webManager != null) {
|
||||||
plugin.webManager.recordJavaLogin(name, plugin.getPlayerIP(p));
|
plugin.webManager.recordJavaLogin(name, plugin.getPlayerIP(p));
|
||||||
|
// ★ 第57批续3:/login 成功后推送 login_verified=1 给 PHP(统一收口)
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||||
|
plugin.webManager.pushLoginVerified(name);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
plugin.getDb().setLoggedIn(name, true);
|
plugin.getDb().setLoggedIn(name, true);
|
||||||
if (!tempPassword) {
|
if (!tempPassword) {
|
||||||
|
|||||||
@@ -10064,10 +10064,19 @@ public class Main extends JavaPlugin
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ★ 第57批续3:/delete ban 拦截(ban 不作为待删除玩家账号的名字)
|
||||||
|
if (sub.equals("delete") && args.length >= 2 && args[1].equalsIgnoreCase("ban")) {
|
||||||
|
sender.sendMessage("§cban 是封禁缺口确认命令,不是玩家账号名");
|
||||||
|
sender.sendMessage("§7确认拉回封禁:§a/sdf1_login confirm ban");
|
||||||
|
sender.sendMessage("§7确认解封:§a/sdf1_login cancel ban");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// ★ 第57批:confirm ban 确认封禁缺口拉回
|
// ★ 第57批:confirm ban 确认封禁缺口拉回
|
||||||
if (sub.equals("confirm") && args.length >= 2 && args[1].equalsIgnoreCase("ban")) {
|
if (sub.equals("confirm") && args.length >= 2 && args[1].equalsIgnoreCase("ban")) {
|
||||||
if (!isAdmin(sender)) { sender.sendMessage("\u00a7c权限不足"); return true; }
|
if (!isAdmin(sender)) { sender.sendMessage("\u00a7c权限不足"); return true; }
|
||||||
if (webManager == null) { sender.sendMessage("\u00a7cWeb通信未初始化"); return true; }
|
if (webManager == null) { sender.sendMessage("\u00a7cWeb通信未初始化"); return true; }
|
||||||
|
if (!webManager.hasBanPending()) { sender.sendMessage("§c当前没有待确认的封禁缺口"); return true; }
|
||||||
webManager.confirmBanGap(sender);
|
webManager.confirmBanGap(sender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -10075,6 +10084,7 @@ public class Main extends JavaPlugin
|
|||||||
if (sub.equals("cancel") && args.length >= 2 && args[1].equalsIgnoreCase("ban")) {
|
if (sub.equals("cancel") && args.length >= 2 && args[1].equalsIgnoreCase("ban")) {
|
||||||
if (!isAdmin(sender)) { sender.sendMessage("\u00a7c权限不足"); return true; }
|
if (!isAdmin(sender)) { sender.sendMessage("\u00a7c权限不足"); return true; }
|
||||||
if (webManager == null) { sender.sendMessage("\u00a7cWeb通信未初始化"); return true; }
|
if (webManager == null) { sender.sendMessage("\u00a7cWeb通信未初始化"); return true; }
|
||||||
|
if (!webManager.hasBanPending()) { sender.sendMessage("§c当前没有待确认的封禁缺口"); return true; }
|
||||||
webManager.cancelBanGap(sender);
|
webManager.cancelBanGap(sender);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5878,6 +5878,24 @@ public class WebManager {
|
|||||||
syncBans();
|
syncBans();
|
||||||
syncAdmins();
|
syncAdmins();
|
||||||
}
|
}
|
||||||
|
// ★ 第57批续3:给所有在线管理员发消息
|
||||||
|
private void broadcastToAdmins(String msg) {
|
||||||
|
String adminTag = plugin.getConfigMgr().areaProtectAdminTag;
|
||||||
|
if (adminTag == null || adminTag.isEmpty()) adminTag = "admin";
|
||||||
|
for (org.bukkit.entity.Player p : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (p.hasPermission("group." + adminTag) || p.isOp()) {
|
||||||
|
p.sendMessage(msg);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (String tag : p.getScoreboardTags()) {
|
||||||
|
if (tag.equalsIgnoreCase(adminTag)) {
|
||||||
|
p.sendMessage(msg);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ★ 第57批:封禁缺口确认/取消 + 登录验证推送
|
// ★ 第57批:封禁缺口确认/取消 + 登录验证推送
|
||||||
/** 进入封禁缺口待确认模式:写bak备份,等管理员确认 */
|
/** 进入封禁缺口待确认模式:写bak备份,等管理员确认 */
|
||||||
private void enterBanPendingMode(List<Map<String, Object>> rows) {
|
private void enterBanPendingMode(List<Map<String, Object>> rows) {
|
||||||
@@ -5890,6 +5908,9 @@ public class WebManager {
|
|||||||
plugin.getLogger().warning("[封禁-缺口] 服主可能批量解封删了 banned-players.json");
|
plugin.getLogger().warning("[封禁-缺口] 服主可能批量解封删了 banned-players.json");
|
||||||
plugin.getLogger().warning("[封禁-缺口] 执行 /sdf1_login confirm ban 拉回封禁");
|
plugin.getLogger().warning("[封禁-缺口] 执行 /sdf1_login confirm ban 拉回封禁");
|
||||||
plugin.getLogger().warning("[封禁-缺口] 执行 /sdf1_login cancel ban 确认解封");
|
plugin.getLogger().warning("[封禁-缺口] 执行 /sdf1_login cancel ban 确认解封");
|
||||||
|
broadcastToAdmins("§c§l[封禁-缺口] §f检测到 " + rows.size() + " 条封禁数据缺口待确认");
|
||||||
|
broadcastToAdmins("§7执行 §a/sdf1_login confirm ban §7拉回封禁数据");
|
||||||
|
broadcastToAdmins("§7或 §a/sdf1_login cancel ban §7确认解封(清空PHP数据)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 管理员确认拉回封禁缺口 */
|
/** 管理员确认拉回封禁缺口 */
|
||||||
|
|||||||
Reference in New Issue
Block a user