public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagInt tag = iTag as TagInt; byte[] data = BitConverter.GetBytes(tag.Value); data = data.ReverseIfLittleEndian(); stream.Write(data, 0, 4); }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagList list = iTag as TagList; byte generic_b = stream.ReadSingleByte(); ETagType generic = (ETagType)generic_b; list.GenericType = generic; //if (generic == ETagType.End) //{ // throw new Exception("TagList cannot consist End tags."); //} byte[] count_b = new byte[4]; stream.Read(count_b, 0, 4); count_b = count_b.ReverseIfLittleEndian(); int count = BitConverter.ToInt32(count_b, 0); TagParserBase parser = Parsers[generic]; for (int i = 0; i < count; i++) { INamedBinaryTag tag = generic.MakeTag(null); parser.ParsePayload(stream, tag); list.Add(tag); } return list.Children; }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagCompound tag = iTag as TagCompound; while (true) { byte b = stream.ReadSingleByte(); ETagType type = (ETagType)b; if (type == ETagType.End) { break; } string key = ParseName(stream); INamedBinaryTag inner = type.MakeTag(key); TagParserBase parser = Parsers[type]; parser.ParsePayload(stream, inner); tag.Set(key, inner); } return tag.Values; }
public override void WritePayload(Stream stream, INamedBinaryTag itag) { TagByte tag = itag as TagByte; byte datum = unchecked((byte)tag.Value); stream.WriteByte(datum); }
// probably shouldn't override this. public virtual INamedBinaryTag Parse(Stream stream) { byte b = stream.ReadSingleByte(); ETagType type = (ETagType)b; string name = ParseName(stream); INamedBinaryTag result = type.MakeTag(name); ParsePayload(stream, result); return(result); }
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagString tag = iTag as TagString; byte[] data = Encoding.UTF8.GetBytes(tag.Text); short len = (short)data.Length; byte[] count_b = BitConverter.GetBytes(len); count_b = count_b.ReverseIfLittleEndian(); stream.Write(count_b, 0, 2); stream.Write(data, 0, len); }
public override object ParsePayload(Stream stream, INamedBinaryTag tagBase) { byte datum = stream.ReadSingleByte(); sbyte val = (sbyte)datum; TagByte tag = tagBase as TagByte; if (tag == null) { throw new InvalidCastException("Wrong NBT type! Expected TagByte, found " + tagBase.GetType().Name); } tag.Value = val; return val; }
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagByteArray tag = iTag as TagByteArray; byte[] count_b = BitConverter.GetBytes(tag.Count); count_b = count_b.ReverseIfLittleEndian(); stream.Write(count_b, 0, 4); foreach (sbyte sb in tag) { byte b = unchecked((byte)sb); stream.WriteByte(b); } }
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagIntArray tag = iTag as TagIntArray; byte[] count_bin = BitConverter.GetBytes(tag.Count); count_bin = count_bin.ReverseIfLittleEndian(); stream.Write(count_bin, 0, 4); foreach (int n in tag) { byte[] num_bin = BitConverter.GetBytes(n); num_bin = num_bin.ReverseIfLittleEndian(); stream.Write(num_bin, 0, 4); } }
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagByteArray tag = iTag as TagByteArray; byte[] count_b = BitConverter.GetBytes(tag.Count); count_b = count_b.ReverseIfLittleEndian(); stream.Write(count_b, 0, 4); foreach (sbyte sb in tag) { byte b = unchecked ((byte)sb); stream.WriteByte(b); } }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagString tag = iTag as TagString; byte[] count_b = new byte[2]; stream.Read(count_b, 0, 2); count_b = count_b.ReverseIfLittleEndian(); short len = BitConverter.ToInt16(count_b, 0); byte[] data = new byte[len]; stream.Read(data, 0, len); tag.Text = Encoding.UTF8.GetString(data); return tag.Text; }
public override object ParsePayload(Stream stream, INamedBinaryTag tagBase) { byte datum = stream.ReadSingleByte(); sbyte val = (sbyte)datum; TagByte tag = tagBase as TagByte; if (tag == null) { throw new InvalidCastException("Wrong NBT type! Expected TagByte, found " + tagBase.GetType().Name); } tag.Value = val; return(val); }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagString tag = iTag as TagString; byte[] count_b = new byte[2]; stream.Read(count_b, 0, 2); count_b = count_b.ReverseIfLittleEndian(); short len = BitConverter.ToInt16(count_b, 0); byte[] data = new byte[len]; stream.Read(data, 0, len); tag.Text = Encoding.UTF8.GetString(data); return(tag.Text); }
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagList list = iTag as TagList; byte generic = (byte)list.GenericType; stream.WriteByte(generic); byte[] data = BitConverter.GetBytes(list.Count); data = data.ReverseIfLittleEndian(); stream.Write(data, 0, 4); foreach (INamedBinaryTag tag in list) { TagParserBase parser = Parsers[tag.TagType]; parser.WritePayload(stream, tag); } }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagByteArray tag = iTag as TagByteArray; byte[] count_b = new byte[4]; stream.Read(count_b, 0, 4); count_b = count_b.ReverseIfLittleEndian(); int count = BitConverter.ToInt32(count_b, 0); for (int i = 0; i < count; i++) { byte b = stream.ReadSingleByte(); sbyte sb = unchecked((sbyte)b); tag.Add(sb); } return tag.Values; }
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagCompound tag = iTag as TagCompound; foreach (KeyValuePair <string, INamedBinaryTag> kvp in tag.Values) { if (kvp.Key != kvp.Value.Name) { throw new InvalidDataException(string.Format( "Dictionary name ({0}) does not match tag name ({1})!", kvp.Key, kvp.Value.Name)); } TagParserBase parser = Parsers[kvp.Value.TagType]; parser.WriteFullTag(stream, kvp.Value); } WriteTag(stream, new TagEnd()); }
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { TagCompound tag = iTag as TagCompound; foreach (KeyValuePair<string, INamedBinaryTag> kvp in tag.Values) { if (kvp.Key != kvp.Value.Name) { throw new InvalidDataException(string.Format( "Dictionary name ({0}) does not match tag name ({1})!", kvp.Key, kvp.Value.Name)); } TagParserBase parser = Parsers[kvp.Value.TagType]; parser.WriteFullTag(stream, kvp.Value); } WriteTag(stream, new TagEnd()); }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagByteArray tag = iTag as TagByteArray; byte[] count_b = new byte[4]; stream.Read(count_b, 0, 4); count_b = count_b.ReverseIfLittleEndian(); int count = BitConverter.ToInt32(count_b, 0); for (int i = 0; i < count; i++) { byte b = stream.ReadSingleByte(); sbyte sb = unchecked ((sbyte)b); tag.Add(sb); } return(tag.Values); }
public override object ParsePayload(Stream stream, INamedBinaryTag tagBase) { byte[] data = new byte[4]; if (stream.Read(data, 0, 4) < 4) { throw new EndOfStreamException("End of stream reached inside of tag. Put those bytes back!"); } data = data.ReverseIfLittleEndian(); int val = BitConverter.ToInt32(data, 0); TagInt tag = tagBase as TagInt; if (tag == null) { throw new InvalidCastException("Wrong NBT type! Expected TagInt, found " + tagBase.GetType().Name); } tag.Value = val; return val; }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagIntArray tag = iTag as TagIntArray; byte[] count_bin = new byte[4]; stream.Read(count_bin, 0, 4); count_bin = count_bin.ReverseIfLittleEndian(); int num_count = BitConverter.ToInt32(count_bin, 0); int byte_count = num_count * 4; for (int i = 0; i < num_count; i++) { byte[] num_bin = new byte[4]; stream.Read(num_bin, 0, 4); num_bin = num_bin.ReverseIfLittleEndian(); int num = BitConverter.ToInt32(num_bin, 0); tag.Add(num); } return tag.Values; }
public override object ParsePayload(Stream stream, INamedBinaryTag tagBase) { byte[] data = new byte[2]; if (stream.Read(data, 0, 2) < 2) { throw new EndOfStreamException("End of stream reached inside of tag. Put those bytes back!"); } data = data.ReverseIfLittleEndian(); short val = BitConverter.ToInt16(data, 0); TagShort tag = tagBase as TagShort; if (tag == null) { throw new InvalidCastException("Wrong NBT type! Expected TagShort, found " + tagBase.GetType().Name); } tag.Value = val; return(val); }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { TagIntArray tag = iTag as TagIntArray; byte[] count_bin = new byte[4]; stream.Read(count_bin, 0, 4); count_bin = count_bin.ReverseIfLittleEndian(); int num_count = BitConverter.ToInt32(count_bin, 0); int byte_count = num_count * 4; for (int i = 0; i < num_count; i++) { byte[] num_bin = new byte[4]; stream.Read(num_bin, 0, 4); num_bin = num_bin.ReverseIfLittleEndian(); int num = BitConverter.ToInt32(num_bin, 0); tag.Add(num); } return(tag.Values); }
public virtual void WriteHeader(Stream stream, INamedBinaryTag tag) { stream.WriteByte((byte)tag.TagType); byte[] namebytes = new byte[0]; short namelen = 0; if (tag.TagType != ETagType.End) { namebytes = Encoding.UTF8.GetBytes(tag.Name); namelen = (short)namebytes.Length; } byte[] namelenbytes = BitConverter.GetBytes(namelen); namelenbytes = namelenbytes.ReverseIfLittleEndian(); stream.Write(namelenbytes, 0, 2); if (tag.TagType != ETagType.End) { stream.Write(namebytes, 0, namelen); } }
public abstract void WritePayload(Stream stream, INamedBinaryTag iTag);
public override void WritePayload(Stream stream, INamedBinaryTag iTag) { }
// returned object is payload, which should be attached to tag. public abstract object ParsePayload(Stream stream, INamedBinaryTag iTag);
public virtual void WriteFullTag(Stream stream, INamedBinaryTag tag) { WriteHeader(stream, tag); WritePayload(stream, tag); }
public static void SerializeTag(JsonWriter writer, INamedBinaryTag tag) { switch (tag.TagType) { case ETagType.Byte: writer.WritePropertyName(tag.Name, false); writer.WriteValue((tag as TagByte).Value); break; case ETagType.Short: writer.WritePropertyName(tag.Name, false); writer.WriteValue((tag as TagShort).Value); break; case ETagType.Int: writer.WritePropertyName(tag.Name, false); writer.WriteValue((tag as TagInt).Value); break; case ETagType.Long: writer.WritePropertyName(tag.Name, false); writer.WriteValue((tag as TagLong).Value); break; case ETagType.Float: writer.WritePropertyName(tag.Name, false); writer.WriteValue((tag as TagFloat).Value); break; case ETagType.Double: writer.WritePropertyName(tag.Name, false); writer.WriteValue((tag as TagDouble).Value); break; case ETagType.Byte_Array: break; case ETagType.String: writer.WritePropertyName(tag.Name, false); writer.WriteValue((tag as TagString).Text); break; case ETagType.List: Serialize(writer, tag as TagList); break; case ETagType.Compound: Serialize(writer, tag as TagCompound); break; case ETagType.Int_Array: break; } }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { return null; }
public static void WriteToStream(Stream stream, INamedBinaryTag nbt) { TagParserBase.WriteTag(stream, nbt); }
public static void WriteTag(Stream stream, INamedBinaryTag tag) { Parsers[tag.TagType].WriteFullTag(stream, tag); }
public override void WriteHeader(Stream stream, INamedBinaryTag tag) { stream.WriteByte((byte)tag.TagType); // no name length or name }
public override object ParsePayload(Stream stream, INamedBinaryTag iTag) { return(null); }
private void HandleComplexEntities(int x, short y, int z, INamedBinaryTag nbt) { if (OnComplexEntity != null) OnComplexEntity(this, new ComplexEntitiesEventArgs(x, y, z, nbt)); }