async void GetPackets(BatchPacket pk, Player player) { await Task.Run(() => { using (BinaryStream stream = new BinaryStream(pk.Payload)) { while (!stream.EndOfStream) { int len = stream.ReadVarInt(); byte[] buffer = stream.ReadBytes(len); using (DataPacket packet = GetPacket(buffer[0])) { if (packet != null) { //Logger.Log("%server_packet_handle", buffer[0].ToString("X"), buffer.Length); packet.SetBuffer(buffer); packet.Decode(); DataPacketReceiveArgs args = new DataPacketReceiveArgs(player, pk); ServerEvents.OnPacketReceive(args); if (args.IsCancel) { return; } player.PacketHandle(packet); } else { Logger.Log("%server_packet_notHandle", buffer[0].ToString("X"), buffer.Length); } } } } }); }