@@ -42,55 +42,79 @@ public void onAsyncPlayerPreLogin(AsyncPlayerPreLoginEvent event) {
4242 String playerName = event .getName ();
4343 String playerUuid = event .getUniqueId ().toString ();
4444
45- logger .debug ("检查玩家白名单状态: {} ({})" , playerName , playerUuid );
45+ logger .info ("=== 白名单验证开始 ===" );
46+ logger .info ("玩家: {} ({})" , playerName , playerUuid );
47+ logger .info ("IP地址: {}" , event .getAddress ().getHostAddress ());
4648
4749 try {
4850 // 检查白名单系统是否已初始化
49- if (!plugin .getWhitelistSystem ().isInitialized ()) {
50- logger .warn ("白名单系统未初始化,允许玩家 {} 进入" , playerName );
51+ boolean isSystemInitialized = plugin .getWhitelistSystem ().isInitialized ();
52+ logger .info ("白名单系统初始化状态: {}" , isSystemInitialized );
53+
54+ if (!isSystemInitialized ) {
55+ logger .warn ("❌ 白名单系统未初始化,允许玩家 {} 进入" , playerName );
5156 return ;
5257 }
5358
5459 // 检查配置是否启用白名单
55- if (!plugin .getConfigManager ().isWhitelistEnabled ()) {
56- logger .debug ("白名单功能已禁用,允许玩家 {} 进入" , playerName );
60+ boolean isWhitelistEnabled = plugin .getConfigManager ().isWhitelistEnabled ();
61+ logger .info ("白名单功能启用状态: {}" , isWhitelistEnabled );
62+
63+ if (!isWhitelistEnabled ) {
64+ logger .info ("✅ 白名单功能已禁用,允许玩家 {} 进入" , playerName );
5765 return ;
5866 }
5967
68+ // 检查玩家是否有绕过白名单的权限(需要提前在数据库或配置中设置)
69+ // 注意:在PreLoginEvent中无法直接检查权限,因为玩家还未完全加载
70+ // 这里可以通过其他方式实现,比如配置文件中的绕过列表
71+
72+ // 检查白名单管理器状态
73+ int cacheSize = whitelistManager .getCacheSize ();
74+ logger .info ("白名单缓存大小: {}" , cacheSize );
75+
6076 // 异步检查玩家是否在白名单中
77+ logger .info ("开始检查玩家白名单状态..." );
6178 CompletableFuture <Boolean > whitelistCheck = whitelistManager .isPlayerWhitelisted (playerUuid );
6279
6380 // 等待结果(设置合理的超时时间)
6481 Boolean isWhitelisted = whitelistCheck .get (5 , TimeUnit .SECONDS );
82+ logger .info ("白名单检查结果: {}" , isWhitelisted );
6583
6684 if (!isWhitelisted ) {
6785 // 玩家不在白名单中,拒绝连接
6886 String kickMessage = getCustomKickMessage (playerName );
6987 event .disallow (AsyncPlayerPreLoginEvent .Result .KICK_WHITELIST , kickMessage );
7088
71- logger .info ("拒绝玩家连接(未在白名单中): {} ({})" , playerName , playerUuid );
89+ logger .warn ("❌ 拒绝玩家连接(未在白名单中): {} ({})" , playerName , playerUuid );
90+ logger .info ("踢出消息: {}" , kickMessage );
7291
7392 // 记录操作日志
7493 logUnauthorizedAccess (playerName , playerUuid , event .getAddress ().getHostAddress ());
7594 } else {
76- logger .info ("允许玩家连接(已在白名单中): {} ({})" , playerName , playerUuid );
95+ logger .info ("✅ 允许玩家连接(已在白名单中): {} ({})" , playerName , playerUuid );
7796 }
7897
7998 } catch (java .util .concurrent .TimeoutException | java .util .concurrent .ExecutionException | InterruptedException e ) {
80- logger .error ("检查玩家白名单状态时发生错误: {} ({})" , playerName , playerUuid , e );
99+ logger .error ("❌ 检查玩家白名单状态时发生错误: {} ({})" , playerName , playerUuid , e );
81100
82101 // 发生错误时的处理策略
83- if (plugin .getConfigManager ().isWhitelistStrictMode ()) {
102+ boolean strictMode = plugin .getConfigManager ().isWhitelistStrictMode ();
103+ logger .info ("严格模式状态: {}" , strictMode );
104+
105+ if (strictMode ) {
84106 // 严格模式:发生错误时拒绝连接
85107 event .disallow (
86108 AsyncPlayerPreLoginEvent .Result .KICK_OTHER ,
87109 "§c白名单验证失败,请稍后重试"
88110 );
89- logger .warn ("严格模式下拒绝玩家连接(白名单验证失败): {}" , playerName );
111+ logger .warn ("❌ 严格模式下拒绝玩家连接(白名单验证失败): {}" , playerName );
90112 } else {
91113 // 宽松模式:发生错误时允许连接
92- logger .warn ("宽松模式下允许玩家连接(白名单验证失败): {}" , playerName );
114+ logger .warn ("⚠️ 宽松模式下允许玩家连接(白名单验证失败): {}" , playerName );
93115 }
116+ } finally {
117+ logger .info ("=== 白名单验证结束 ===" );
94118 }
95119 }
96120
0 commit comments