public static INamedBinaryTag ParseNBT(byte[] nbt) { INamedBinaryTag r = null; BinaryReader reader = new BinaryReader(new MemoryStream(nbt)); // Read initial named tag NBT_Type type = (NBT_Type)reader.ReadByte(); string name = reader.ReadNetworkString(); // Should be compound, but best be sure switch (type) { case NBT_Type.Compound: r = new NBT_Compound(reader, name); break; case NBT_Type.Byte: r = new NBT_Byte(reader, name); break; case NBT_Type.ByteArray: r = new NBT_ByteArray(reader, name); break; case NBT_Type.Double: r = new NBT_Double(reader, name); break; case NBT_Type.End: r = new NBT_End(name); break; case NBT_Type.Float: r = new NBT_Float(reader, name); break; case NBT_Type.Int: r = new NBT_Int(reader, name); break; case NBT_Type.List: r = new NBT_List(reader, name); break; case NBT_Type.Long: r = new NBT_Long(reader, name); break; case NBT_Type.Short: r = new NBT_Short(reader, name); break; case NBT_Type.String: r = new NBT_String(reader, name); break; } return r; }
public NBT_Compound(BinaryReader reader, string name) { Name = name; m_Items = new List<INamedBinaryTag>(); for (NBT_Type type = (NBT_Type)reader.ReadByte(); type != NBT_Type.End; type = (NBT_Type)reader.ReadByte()) { string subname = reader.ReadNetworkString(); switch (type) { case NBT_Type.Compound: m_Items.Add(new NBT_Compound(reader, subname)); break; case NBT_Type.Byte: m_Items.Add(new NBT_Byte(reader, subname)); break; case NBT_Type.ByteArray: m_Items.Add(new NBT_ByteArray(reader, subname)); break; case NBT_Type.Double: m_Items.Add(new NBT_Double(reader, subname)); break; case NBT_Type.Float: m_Items.Add(new NBT_Float(reader, subname)); break; case NBT_Type.Int: m_Items.Add(new NBT_Int(reader, subname)); break; case NBT_Type.List: m_Items.Add(new NBT_List(reader, subname)); break; case NBT_Type.Long: m_Items.Add(new NBT_Long(reader, subname)); break; case NBT_Type.Short: m_Items.Add(new NBT_Short(reader, subname)); break; case NBT_Type.String: m_Items.Add(new NBT_String(reader, subname)); break; } } }
private void ParseNamedEntitySpawn(BinaryReader reader) { HandleNamedEntitySpawn(reader.ReadNetworkInt32(), reader.ReadNetworkString(), reader.ReadNetworkInt32(), reader.ReadNetworkInt32(), reader.ReadNetworkInt32(), reader.ReadByte(), reader.ReadByte(), reader.ReadNetworkInt16()); }
private void ParseLogin(BinaryReader reader) { HandleLogin(reader.ReadNetworkInt32(), reader.ReadNetworkString(), reader.ReadNetworkString()); }
private void ParseHandshake(BinaryReader reader) { HandleHandshake(reader.ReadNetworkString()); }
private void ParseDisconnect(BinaryReader reader) { HandleDisconnect(reader.ReadNetworkString()); }
private void ParseChat(BinaryReader reader) { HandleChat(reader.ReadNetworkString()); }
public NBT_String(BinaryReader reader, string name) { Name = name; Value = reader.ReadNetworkString(); }