From 2860b57092cd9b772b7247503dc2ddb99f0d1c57 Mon Sep 17 00:00:00 2001 From: melchior Date: Wed, 23 Dec 2020 17:09:09 -0500 Subject: [PATCH] Additional Map metadata --- Automap/Helpers.cs | 6 +++++- Automap/Subsystems/AutomapSystem.cs | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Automap/Helpers.cs b/Automap/Helpers.cs index 52fd3f7..2d387aa 100644 --- a/Automap/Helpers.cs +++ b/Automap/Helpers.cs @@ -160,7 +160,11 @@ namespace Automap return arbBlockIDTable; } - + public static Mod Self(this ICoreClientAPI ownApi) + { + AutomapMod ownMod = ownApi.ModLoader.GetModSystem( ); + return ownMod.Mod; + } } } diff --git a/Automap/Subsystems/AutomapSystem.cs b/Automap/Subsystems/AutomapSystem.cs index 04db4c2..4e85a7e 100644 --- a/Automap/Subsystems/AutomapSystem.cs +++ b/Automap/Subsystems/AutomapSystem.cs @@ -39,6 +39,7 @@ namespace Automap 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(@"(?[\d]+)_(?[\d]+)\.png", RegexOptions.Singleline); private ConcurrentDictionary columnCounters = new ConcurrentDictionary(3, 150); @@ -295,6 +296,7 @@ namespace Automap Logger.VerboseDebug("Thread '{0}' executing finally block.", Thread.CurrentThread.Name); #endif PersistPointsData(); + Write_PlainMetadata( ); } } @@ -447,6 +449,29 @@ namespace Automap } + 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 mostActiveCol, IMapChunk mapChunk) { ColumnMeta data = new ColumnMeta(mostActiveCol.Key.Copy(), ClientAPI, (byte) chunkSize, (ClientAPI.World.BlockAccessor.MapSizeY / chunkSize)); -- 2.11.0