예제 #1
0
 public void ReadPacket(IMinecraftStream stream)
 {
     ItemID = stream.ReadInt16();
     Metadata = stream.ReadInt16();
     byte length = stream.ReadUInt8();
     Data = stream.ReadUInt8Array(length);
 }
예제 #2
0
        public void ReadPacket(IMinecraftStream stream)
        {
            ItemID   = stream.ReadInt16();
            Metadata = stream.ReadInt16();
            byte length = stream.ReadUInt8();

            Data = stream.ReadUInt8Array(length);
        }
예제 #3
0
        public static MetadataDictionary FromStream(IMinecraftStream stream)
        {
            var value = new MetadataDictionary();
            while (true)
            {
                byte key = stream.ReadUInt8();
                if (key == 127) break;

                byte type = (byte)((key & 0xE0) >> 5);
                byte index = (byte)(key & 0x1F);

                var entry = EntryTypes[type]();
                entry.FromStream(stream);
                entry.Index = index;

                value[index] = entry;
            }
            return value;
        }
예제 #4
0
        public IPacket ReadPacket(IMinecraftStream stream, bool serverbound = true)
        {
            var  id = stream.ReadUInt8();
            Type type;

            if (serverbound)
            {
                type = ServerboundPackets[id];
            }
            else
            {
                type = ClientboundPackets[id];
            }
            if (type == null)
            {
                throw new NotSupportedException("Unable to read packet type 0x" + id.ToString("X2"));
            }
            var instance = (IPacket)Activator.CreateInstance(type);

            instance.ReadPacket(stream);
            return(instance);
        }
예제 #5
0
        public static MetadataDictionary FromStream(IMinecraftStream stream)
        {
            var value = new MetadataDictionary();

            while (true)
            {
                byte key = stream.ReadUInt8();
                if (key == 127)
                {
                    break;
                }

                byte type  = (byte)((key & 0xE0) >> 5);
                byte index = (byte)(key & 0x1F);

                var entry = EntryTypes[type]();
                entry.FromStream(stream);
                entry.Index = index;

                value[index] = entry;
            }
            return(value);
        }
예제 #6
0
 public override void FromStream(IMinecraftStream stream)
 {
     Value = stream.ReadUInt8();
 }
예제 #7
0
 public override void FromStream(IMinecraftStream stream)
 {
     Value = stream.ReadUInt8();
 }