public override void SendLevel(Level prev, Level level) { int volume = level.blocks.Length; if (Supports(CpeExt.FastMap)) { Send(Packet.LevelInitaliseExt(volume)); } else { Send(Packet.LevelInitalise()); } if (hasBlockDefs) { if (prev != null && prev != level) { RemoveOldLevelCustomBlocks(prev); } BlockDefinition.SendLevelCustomBlocks(player); if (Supports(CpeExt.InventoryOrder)) { BlockDefinition.SendLevelInventoryOrder(player); } } LevelChunkStream.SendLevel(this, level, volume); // Force players to read the MOTD (clamped to 3 seconds at most) if (level.Config.LoadDelay > 0) { Thread.Sleep(level.Config.LoadDelay); } Send(Packet.LevelFinalise(level.Width, level.Height, level.Length)); }