/// <summary> /// Loads the ClassicWorld map. /// </summary> public void Load() { BlockData = null; FormatVersion = Basetag["FormatVersion"].ByteValue; if (FormatVersion != 1) throw new FormatException("Unsupported format version: " + FormatVersion.ToString()); Foreignmeta = new ForeignMeta(); MapName = Basetag["Name"].StringValue; UUID = Basetag["UUID"].ByteArrayValue; Size.x = Basetag["X"].ShortValue; Size.y = Basetag["Y"].ShortValue; Size.z = Basetag["Z"].ShortValue; var CreatedBy = Basetag.Get<NbtCompound>("CreatedBy"); if (CreatedBy != null) { CreatingService = CreatedBy["Service"].StringValue; CreatingUsername = CreatedBy["Username"].StringValue; } var Mapgen = Basetag.Get<NbtCompound>("MapGenerator"); if (Mapgen != null) { GeneratingSoftware = Mapgen["Software"].StringValue; GeneratorName = Mapgen["MapGeneratorName"].StringValue; } if (Basetag["TimeCreated"] != null) TimeCreated = Basetag["TimeCreated"].LongValue; if (Basetag["LastAccessed"] != null) LastAccessed = Basetag["LastAccessed"].LongValue; if (Basetag["LastModified"] != null) LastModified = Basetag["LastModified"].LongValue; var Spawnpoint = Basetag.Get<NbtCompound>("Spawn"); if (Spawnpoint == null) throw new FormatException("Spawn not found."); else { SpawnPos.x = Spawnpoint["X"].ShortValue; SpawnPos.y = Spawnpoint["Y"].ShortValue; SpawnPos.z = Spawnpoint["Z"].ShortValue; SpawnRotation.x = Spawnpoint["H"].ByteValue; SpawnRotation.z = Spawnpoint["P"].ByteValue; } BlockData = Basetag["BlockArray"].ByteArrayValue; var Metadata = Basetag.Get<NbtCompound>("Metadata"); if (Metadata != null) { // -- Let user-defined metadata parsers parse metadata... foreach (IMetadataStructure Meta in MetadataParsers.Values) Metadata = Meta.Read(Metadata); // -- Store all foreign metadata Metadata = Foreignmeta.Read(Metadata); } // -- Now that the map is loaded, we have to ensure all of the required values were included. if (BlockData == null) throw new FormatException("BlockArray not found."); if (Size.x == 0 || Size.y == 0 || Size.z == 0) throw new FormatException("Map size not found."); if (FormatVersion == 0 || MapName == null || UUID == null) throw new FormatException("Map header information not found."); if (LastAccessed != 0) LastAccessed = GetCurrentUnixTime(); Basetag = null; }
/// <summary> /// Loads the ClassicWorld map. /// </summary> public void Load() { BlockData = null; FormatVersion = Basetag["FormatVersion"].ByteValue; if (FormatVersion != 1) { throw new FormatException("Unsupported format version: " + FormatVersion.ToString()); } Foreignmeta = new ForeignMeta(); MapName = Basetag["Name"].StringValue; UUID = Basetag["UUID"].ByteArrayValue; Size.x = Basetag["X"].ShortValue; Size.y = Basetag["Y"].ShortValue; Size.z = Basetag["Z"].ShortValue; var CreatedBy = Basetag.Get <NbtCompound>("CreatedBy"); if (CreatedBy != null) { CreatingService = CreatedBy["Service"].StringValue; CreatingUsername = CreatedBy["Username"].StringValue; } var Mapgen = Basetag.Get <NbtCompound>("MapGenerator"); if (Mapgen != null) { GeneratingSoftware = Mapgen["Software"].StringValue; GeneratorName = Mapgen["MapGeneratorName"].StringValue; } if (Basetag["TimeCreated"] != null) { TimeCreated = Basetag["TimeCreated"].LongValue; } if (Basetag["LastAccessed"] != null) { LastAccessed = Basetag["LastAccessed"].LongValue; } if (Basetag["LastModified"] != null) { LastModified = Basetag["LastModified"].LongValue; } var Spawnpoint = Basetag.Get <NbtCompound>("Spawn"); if (Spawnpoint == null) { throw new FormatException("Spawn not found."); } else { SpawnPos.x = Spawnpoint["X"].ShortValue; SpawnPos.y = Spawnpoint["Y"].ShortValue; SpawnPos.z = Spawnpoint["Z"].ShortValue; SpawnRotation.x = Spawnpoint["H"].ByteValue; SpawnRotation.z = Spawnpoint["P"].ByteValue; } BlockData = Basetag["BlockArray"].ByteArrayValue; var Metadata = Basetag.Get <NbtCompound>("Metadata"); if (Metadata != null) { // -- Let user-defined metadata parsers parse metadata... foreach (IMetadataStructure Meta in MetadataParsers.Values) { Metadata = Meta.Read(Metadata); } // -- Store all foreign metadata Metadata = Foreignmeta.Read(Metadata); } // -- Now that the map is loaded, we have to ensure all of the required values were included. if (BlockData == null) { throw new FormatException("BlockArray not found."); } if (Size.x == 0 || Size.y == 0 || Size.z == 0) { throw new FormatException("Map size not found."); } if (FormatVersion == 0 || MapName == null || UUID == null) { throw new FormatException("Map header information not found."); } if (LastAccessed != 0) { LastAccessed = GetCurrentUnixTime(); } Basetag = null; }