public static UInt16 GetBlockCrc(Point2D blockCoords, int mapID, ref byte[] landDataOut, ref byte[] staticsDataOut)
        {
            if (blockCoords.X < 0 || blockCoords.Y < 0 || (blockCoords.X) >= Map.Maps[mapID].Tiles.BlockWidth || (blockCoords.Y) >= Map.Maps[mapID].Tiles.BlockHeight)
            {
                return((UInt16)0);
            }

            landDataOut = BlockUtility.GetLandData(blockCoords, mapID);


            staticsDataOut = BlockUtility.GetRawStaticsData(blockCoords, mapID);
            byte[] blockData = new byte[landDataOut.Length + staticsDataOut.Length];
            Array.Copy(landDataOut, 0, blockData, 0, landDataOut.Length);
            Array.Copy(staticsDataOut, 0, blockData, landDataOut.Length, staticsDataOut.Length);
            return(CRC.Fletcher16(blockData));
        }
        private static void printCrc_OnCommand(CommandEventArgs e)
        {
            Mobile     from      = e.Mobile;
            Map        playerMap = from.Map;
            TileMatrix tm        = playerMap.Tiles;

            int blocknum = (((from.Location.X >> 3) * tm.BlockHeight) + (from.Location.Y >> 3));

            byte[] LandData    = BlockUtility.GetLandData(blocknum, playerMap.MapID);
            byte[] StaticsData = BlockUtility.GetRawStaticsData(blocknum, playerMap.MapID);

            byte[] blockData = new byte[LandData.Length + StaticsData.Length];
            Array.Copy(LandData, blockData, LandData.Length);
            Array.Copy(StaticsData, 0, blockData, LandData.Length, StaticsData.Length);


            UInt16 crc = CRC.Fletcher16(blockData);

            Console.WriteLine("CRC is 0x" + crc.ToString("X4"));
        }