MineFrog.Player.SendMap C# (CSharp) Method

SendMap() private method

private SendMap ( ) : void
return void
        private void SendMap()
        {
            if (OldLevel != null)
            {
                OldLevel.Players.Remove(this);
                SendAllDeSpawns();
            }

            SendMotd();
            _isLoading = true;

            SendRaw(2);

            var mapSize = new byte[4];
            BitConverter.GetBytes(IPAddress.HostToNetworkOrder(Level.BlockData.Length)).CopyTo(mapSize, 0);

            //level.blocks.CopyTo(buffer, 4);
            //int bufferLength = level.blocks.Length + 4;

            byte[] buffer = GZip(mapSize, Level.BlockData);
            var number = (int) Math.Ceiling(((double) buffer.Length)/1024);
            for (int i = 1; buffer.Length > 0; ++i)
            {
                var length = (short) Math.Min(buffer.Length, 1024);
                var send = new byte[1027];
                HTNO(length).CopyTo(send, 0);
                Buffer.BlockCopy(buffer, 0, send, 2, length);
                var tempbuffer = new byte[buffer.Length - length];
                Buffer.BlockCopy(buffer, length, tempbuffer, 0, buffer.Length - length);
                buffer = tempbuffer;
                send[1026] = (byte) (i*100/number);
                //Server.Log("Sending map part " + i, LogTypesEnum.Debug);
                SendRaw(3, send);
                Thread.Sleep(10);
            }

            //Server.Log("Map sent, initializing", LogTypesEnum.Debug);

            buffer = new byte[6];
            HTNO((short) Level.SizeX).CopyTo(buffer, 0);
            HTNO((short) Level.SizeY).CopyTo(buffer, 2);
            HTNO((short) Level.SizeZ).CopyTo(buffer, 4);
            SendRaw(4, buffer);

            _isLoading = false;

            Level.Players.Add(this);

            SendAllSpawns();

            SendTeleportThisPlayer(Level.SpawnPos);

            //Server.Log("map done", LogTypesEnum.Debug);
        }