void UpdateBlocks()
    {
        loadWatch.Reset();
        loadWatch.Start();
        while (true)
        {
            RemoteFortressReader.MapBlock block = DFConnection.Instance.PopMapBlockUpdate();
            if (block == null)
            {
                break;
            }
            MapDataStore.Main.StoreTiles(block);
            if (block.tiles.Count > 0)
            {
                SetDirtyBlock(block.map_x, block.map_y, block.map_z);
            }
            if (block.water.Count > 0 || block.magma.Count > 0)
            {
                SetDirtyLiquidBlock(block.map_x, block.map_y, block.map_z);
            }
        }
        loadWatch.Stop();
        genWatch.Reset();
        genWatch.Start();
        EnqueueMeshUpdates();
        genWatch.Stop();

        mesher.Poll();

        FetchNewMeshes();
    }