Beispiel #1
0
        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;
        }
Beispiel #2
0
        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;
                }
            }
        }
Beispiel #3
0
 private void ParseNamedEntitySpawn(BinaryReader reader)
 {
     HandleNamedEntitySpawn(reader.ReadNetworkInt32(), reader.ReadNetworkString(), reader.ReadNetworkInt32(), reader.ReadNetworkInt32(), reader.ReadNetworkInt32(), reader.ReadByte(), reader.ReadByte(), reader.ReadNetworkInt16());
 }
Beispiel #4
0
 private void ParseLogin(BinaryReader reader)
 {
     HandleLogin(reader.ReadNetworkInt32(), reader.ReadNetworkString(), reader.ReadNetworkString());
 }
Beispiel #5
0
 private void ParseHandshake(BinaryReader reader)
 {
     HandleHandshake(reader.ReadNetworkString());
 }
Beispiel #6
0
 private void ParseDisconnect(BinaryReader reader)
 {
     HandleDisconnect(reader.ReadNetworkString());
 }
Beispiel #7
0
 private void ParseChat(BinaryReader reader)
 {
     HandleChat(reader.ReadNetworkString());
 }
Beispiel #8
0
 public NBT_String(BinaryReader reader, string name)
 {
     Name = name;
     Value = reader.ReadNetworkString();
 }