public NbtTag Serialize(string tagName) { var chunk = new NbtCompound(tagName); var entities = new NbtList("Entities", NbtTagType.Compound); chunk.Add(entities); chunk.Add(new NbtInt("X", X)); chunk.Add(new NbtInt("Z", Z)); chunk.Add(new NbtByte("LightPopulated", (byte)(LightPopulated ? 1 : 0))); chunk.Add(new NbtByte("TerrainPopulated", (byte)(TerrainPopulated ? 1 : 0))); chunk.Add(new NbtByteArray("Blocks", Data)); chunk.Add(new NbtByteArray("Data", Metadata.ToArray())); chunk.Add(new NbtByteArray("SkyLight", SkyLight.ToArray())); chunk.Add(new NbtByteArray("BlockLight", BlockLight.ToArray())); var tiles = new NbtList("TileEntities", NbtTagType.Compound); foreach (var kvp in TileEntities) { var c = new NbtCompound(); c.Add(new NbtList("coordinates", new[] { new NbtInt(kvp.Key.X), new NbtInt(kvp.Key.Y), new NbtInt(kvp.Key.Z) })); c.Add(new NbtList("value", new[] { kvp.Value })); tiles.Add(c); } chunk.Add(tiles); // TODO: Entities return(chunk); }