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);
                            }
                        }
                    }
                }
            });
        }