Пример #1
0
        /// <summary>
        /// Reads an Uncompressed NbtBlob.
        /// </summary>
        /// <exception cref="NBTException">Invalid NbtBlob</exception>
        public static NbtBlob ReadNbtBlob(this PrimitiveReader reader)
        {
            var id = reader.ReadByte();

            if (id == Tag.EndId)
            {
                return(NbtBlob.Empty);
            }
            if (id != Tag.Compound.Id)
            {
                throw new NBTException("NBT root is not a compound.");
            }

            var name = reader.ReadStringNbt();
            var tag  = new Tag.Compound();

            tag.Read(reader, 0);
            return(new NbtBlob(name, tag));
        }
Пример #2
0
            internal override void Read(PrimitiveReader reader, int level)
            {
                level++;
                if (level > MaxNestLevel)
                {
                    ThrowMaxNestLevel();
                }

                while (true)
                {
                    var id = reader.ReadByte();
                    if (id == EndId)
                    {
                        break;
                    }

                    var tag  = CreateTagFromID(id);
                    var name = reader.ReadStringNbt();
                    tag.Read(reader, level);
                    this[name] = tag;
                }
            }
Пример #3
0
 internal override void Read(PrimitiveReader reader, int _) => Value = reader.ReadStringNbt();