예제 #1
0
        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);
        }