/// <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)); }
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; } }
internal override void Read(PrimitiveReader reader, int _) => Value = reader.ReadStringNbt();