diff --git a/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java b/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java index b8d0970f..cf7b1e28 100644 --- a/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java +++ b/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java @@ -64,6 +64,7 @@ public class GuiCaptchaHandler implements Listener { private PacketAdapter chatPacketListener; + private PacketAdapter chunkPacketListener; private PacketAdapter windowPacketListener; //define timesLeft @@ -93,6 +94,7 @@ public class GuiCaptchaHandler implements Listener { if (!isPacketListenersActive) { ProtocolLibrary.getProtocolManager().addPacketListener(windowPacketListener); ProtocolLibrary.getProtocolManager().addPacketListener(chatPacketListener); + ProtocolLibrary.getProtocolManager().addPacketListener(chunkPacketListener); isPacketListenersActive = true; } } @@ -175,6 +177,16 @@ public class GuiCaptchaHandler implements Listener { } catch (NullPointerException e) { getLogger().log(Level.WARNING, "Unexpected error occurred while setting item meta."); } + chunkPacketListener = new PacketAdapter(this.plugin, ListenerPriority.HIGHEST, PacketType.Play.Server.MAP_CHUNK) { + @Override + public void onPacketSending(PacketEvent event) { + // 获取数据包的接收者(玩家) + Player packetPlayer = event.getPlayer(); + if (!closeReasonMap.containsKey(packetPlayer) && !authmeApi.isRegistered(packetPlayer.getName())) { + event.setCancelled(true); + } + } + }; windowPacketListener = new PacketAdapter(this.plugin, ListenerPriority.HIGHEST, PacketType.Play.Client.CLOSE_WINDOW) { @Override public void onPacketReceiving(PacketEvent event) {