internal static List <AbstractTag> ReadTagList(Stream input) { TagType tagType = (TagType)TagByte.ReadByte(input); int length = TagInt.ReadInt(input); List <AbstractTag> tags = new List <AbstractTag>(); for (int i = 0; i < length; i++) { AbstractTag tag = null; switch (tagType) { case TagType.Byte: tag = TagByte.ReadUnnamedTagByte(input); break; case TagType.ByteArray: tag = TagByteArray.ReadUnnamedTagByteArray(input); break; case TagType.Compound: tag = TagCompound.ReadUnnamedTagCompound(input); break; case TagType.Double: tag = TagDouble.ReadUnnamedTagDouble(input); break; case TagType.End: tag = new TagEnd(); break; case TagType.Float: tag = TagFloat.ReadUnnamedTagFloat(input); break; case TagType.Int: tag = TagInt.ReadUnnamedTagInt(input); break; case TagType.IntArray: tag = TagIntArray.ReadUnnamedTagIntArray(input); break; case TagType.List: tag = TagList.ReadUnnamedTagList(input); break; case TagType.Long: tag = TagLong.ReadUnnamedTagLong(input); break; case TagType.Short: tag = TagShort.ReadUnnamedTagShort(input); break; case TagType.String: tag = TagString.ReadUnnamedTagString(input); break; default: tag = null; break; } if (tag != null) { tags.Add(tag); } } return(tags); }
public override void Write(Stream output) { output.WriteByte((byte)Type); TagString.WriteString(output, Name); TagByteArray.WriteByteArray(output, Value); }