diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/VoiceChatPlugin.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/VoiceChatPlugin.java index 6c4da29..4d5fd8f 100644 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/VoiceChatPlugin.java +++ b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/VoiceChatPlugin.java @@ -4,6 +4,7 @@ import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundCu import com.github.steveice10.mc.protocol.packet.ingame.clientbound.ClientboundLoginPacket; import com.github.steveice10.mc.protocol.packet.ingame.serverbound.ServerboundCustomPayloadPacket; import com.github.steveice10.packetlib.Session; +import com.github.steveice10.packetlib.event.session.DisconnectedEvent; import com.github.steveice10.packetlib.packet.Packet; import io.netty.buffer.Unpooled; import land.chipmunk.chayapak.chomens_bot.Bot; @@ -68,16 +69,11 @@ public class VoiceChatPlugin extends Bot.Listener { System.out.println(new String(_packet.getData())); */ if (_packet.getChannel().equals("voicechat:secret")) { - System.out.println("got the secret packet"); - final byte[] bytes = _packet.getData(); final FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.wrappedBuffer(bytes)); final SecretPacket secretPacket = new SecretPacket().fromBytes(buf); - System.out.println(secretPacket.secret()); - System.out.println(secretPacket.serverPort()); - initializationData = new InitializationData(bot.options().host(), secretPacket); try { @@ -87,8 +83,6 @@ public class VoiceChatPlugin extends Bot.Listener { throw new RuntimeException(e); } - System.out.println("address " + address.getHostName()); - socket = new ClientVoiceChatSocket(); try { socket.open(); @@ -96,14 +90,12 @@ public class VoiceChatPlugin extends Bot.Listener { e.printStackTrace(); } - bot.executorService().submit(() -> { + bot.executorService().execute(() -> { while (true) { try { if (socket.isClosed()) continue; - System.out.println("reading packet"); final NetworkMessage message = NetworkMessage.readPacket(socket.read(), initializationData); - System.out.println("DONE reading packet, this message will; prob nto woshow"); if (message == null) continue; @@ -137,6 +129,7 @@ public class VoiceChatPlugin extends Bot.Listener { private final byte[] BUFFER = new byte[4096]; public RawUdpPacket read (DatagramSocket socket) { + if (socket.isClosed()) return null; try { DatagramPacket packet = new DatagramPacket(BUFFER, BUFFER.length); @@ -161,6 +154,11 @@ public class VoiceChatPlugin extends Bot.Listener { } + @Override + public void disconnected(DisconnectedEvent event) { + socket.close(); + } + private static class ClientVoiceChatSocket extends VoiceChatSocketBase { private DatagramSocket socket; @@ -185,6 +183,7 @@ public class VoiceChatPlugin extends Bot.Listener { public void close() { if (socket != null) { socket.close(); + socket = null; } } diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/voiceChat/NetworkMessage.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/voiceChat/NetworkMessage.java index ca058f0..0f454a4 100644 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/voiceChat/NetworkMessage.java +++ b/src/main/java/land/chipmunk/chayapak/chomens_bot/voiceChat/NetworkMessage.java @@ -57,6 +57,8 @@ public class NetworkMessage { } public static NetworkMessage readPacket (RawUdpPacket packet, InitializationData initializationData) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { + if (packet == null) return null; + final byte[] data = packet.data(); final FriendlyByteBuf b = new FriendlyByteBuf(Unpooled.wrappedBuffer(data));