internal CommandType CurrentState { get; set; }
//Run status, Chunks processed, stats, center of map....
- private uint nullChunkCount, updatedChunksTotal;
+ private uint nullChunkCount, nullMapCount, updatedChunksTotal;
private Vec2i startChunkColumn;
private readonly int chunkSize;
if (mapChunk == null)
{
Logger.Warning("SKIP CHUNK: ({0}) - Map Chunk NULL!", mostActiveCol.Key);
- nullChunkCount++;
+ nullMapCount++;
columnCounter.TryRemove(mostActiveCol.Key, out ejectedItem);
continue;
}
columnCounter.TryRemove(mostActiveCol.Key, out ejectedItem);
Logger.VerboseDebug("Un-painted chunk: ({0}) ", mostActiveCol.Key);
}
-
}
+ //Cleanup persisted Metadata...
+ chunkTopMetadata.ClearMetadata( );
}
UpdateStatus(this.updatedChunksTotal, this.nullChunkCount, updatedChunks);
#if DEBUG
Logger.VerboseDebug("Chunk null or empty X{0} Y{1} Z{2}", key.X, targetChunkY, key.Y);
#endif
+ nullChunkCount++;
continue;
}
foreach (var blockEnt in chunkData.BlockEntities)
{
-
if (blockEnt != null && blockEnt.Block != null && BlockID_Designators.ContainsKey(blockEnt.Block.BlockId))
{
var designator = BlockID_Designators[blockEnt.Block.BlockId];
designator.SpecialAction(ClientAPI, POIs, blockEnt.Pos.Copy(), blockEnt.Block);
}
}
-
}
/********************* Chunk/Column BLOCKs scanning ****************/
//Heightmap, Stats, block tally
int X_index, Y_index, Z_index;
X_index = Y_index = Z_index = 0;
+ //Ensure ChunkData Metadata fields arn't null...due to being tossed out
+ if (chunkMeta.HeightMap == null) { chunkMeta.HeightMap = new ushort[chunkSize, chunkSize]; }
+ if (chunkMeta.RockRatio == null) { chunkMeta.RockRatio = new Dictionary<int, uint>(10); }
+
do
{
do