private const string poiFileName = @"poi_binary";
private const string eoiFileName = @"eoi_binary";
private const string pointsTsvFileName = @"points_of_interest.tsv";
+ private const string plainMetadataFileName = @"map_metadata.txt";
private static Regex chunkShardRegex = new Regex(@"(?<X>[\d]+)_(?<Z>[\d]+)\.png", RegexOptions.Singleline);
private ConcurrentDictionary<Vec2i, ColumnCounter> columnCounters = new ConcurrentDictionary<Vec2i, ColumnCounter>(3, 150);
Logger.VerboseDebug("Thread '{0}' executing finally block.", Thread.CurrentThread.Name);
#endif
PersistPointsData();
+ Write_PlainMetadata( );
}
}
}
+ private void Write_PlainMetadata( )
+ {
+ string metaPath = Path.Combine(path, plainMetadataFileName);
+
+ using (var metaDataFile = File.Open(metaPath,FileMode.Create)) {
+ using (var mdWriter = new StreamWriter(metaDataFile, Encoding.ASCII))
+ {
+ mdWriter.WriteLine("WorldSeed {0}", ClientAPI.World.Seed);
+ mdWriter.WriteLine("PlayerCoords {0:D} {1:D}", startChunkColumn.X, startChunkColumn.Y);
+ mdWriter.WriteLine("DefaultSpawnPos {0:D} {1:D} {2:D}", ClientAPI.World.DefaultSpawnPosition.AsBlockPos.X,ClientAPI.World.DefaultSpawnPosition.AsBlockPos.Y,ClientAPI.World.DefaultSpawnPosition.AsBlockPos.Z);
+ mdWriter.WriteLine("ChunkSize {0}", chunkSize);
+ mdWriter.WriteLine("SeaLevel {0:D}", ClientAPI.World.SeaLevel);
+ mdWriter.WriteLine("WorldSize {0:D} {1:D} {2:D}", ClientAPI.World.BulkBlockAccessor.MapSizeX, ClientAPI.World.BulkBlockAccessor.MapSizeY,ClientAPI.World.BulkBlockAccessor.MapSizeZ);
+ mdWriter.WriteLine("RegionSize {0:D}", ClientAPI.World.BulkBlockAccessor.RegionSize);
+ mdWriter.WriteLine("Version '{0}'", ClientAPI.Self().Info.Version);
+ mdWriter.WriteLine("PlayTime {0:F1}", ClientAPI.InWorldEllapsedMilliseconds / 1000);
+ mdWriter.WriteLine("GameDate {0}", ClientAPI.World.Calendar.PrettyDate());
+ mdWriter.Flush( );
+ }
+ }
+ }
+
+
private ColumnMeta CreateColumnMetadata(KeyValuePair<Vec2i, ColumnCounter> mostActiveCol, IMapChunk mapChunk)
{
ColumnMeta data = new ColumnMeta(mostActiveCol.Key.Copy(), ClientAPI, (byte) chunkSize, (ClientAPI.World.BlockAccessor.MapSizeY / chunkSize));