private IEnumerable <long> LoadAllMapIDs() { var ids = new List <long>(); OpenDB(); // thank you A Cynodont for help with this section const string MapKeyword = "map"; var iterator = BedrockDB.CreateIterator(); iterator.Seek(MapKeyword); while (iterator.IsValid()) { var name = iterator.StringKey(); if (name.StartsWith(MapKeyword)) { if (Util.MapString(name, out long number)) { ids.Add(number); } } else { break; } iterator.Next(); } iterator.Dispose(); CloseDB(); return(ids); }
protected override Dictionary <long, Map> LoadMaps() { var maps = new Dictionary <long, Map>(); OpenDB(); // thank you A Cynodont for help with this section const string MapKeyword = "map"; var iterator = BedrockDB.CreateIterator(); iterator.Seek(MapKeyword); while (iterator.IsValid()) { var name = iterator.StringKey(); if (name.StartsWith(MapKeyword)) { if (MapString(name, out long number)) { NbtFile nbtfile = new NbtFile(); nbtfile.BigEndian = false; byte[] data = iterator.Value(); nbtfile.LoadFromBuffer(data, 0, data.Length, NbtCompression.AutoDetect); var colors = nbtfile.RootTag["colors"].ByteArrayValue; // skip completely blank maps (bedrock likes generating pointless parents) if (!colors.All(x => x == 0)) { maps.Add(number, new BedrockMap(colors)); } } } else { break; } iterator.Next(); } iterator.Dispose(); CloseDB(); return(maps); }