示例#1
0
        protected static ItemStack ReadItem(StreamWrapper buff)
        {
            var id   = buff.ReadShort();
            var item = ItemStack.CreateItemStack(id);

            if (item == null)
            {
                return(null);
            }

            item.ItemCount  = buff.ReadByte();
            item.ItemDamage = buff.ReadShort();
            var nbtLength = buff.ReadShort();

            if (nbtLength < 0)
            {
                return(item);
            }

            item.NbtData = buff.ReadBytes(nbtLength);

            var reader = new NbtFile()
            {
                BigEndian = true
            };

            reader.LoadFromBuffer(item.NbtData, 0, nbtLength, NbtCompression.AutoDetect);

            item.NbtRoot = reader.RootTag;
            return(item);
        }
示例#2
0
        public Packet GetPacket()
        {
            var length = streamWrapper.ReadVarInt();
            var data   = streamWrapper.ReadBytes(length);

            var tmp = new StreamWrapper(data);
            var id  = tmp.ReadVarInt();

            if (!forwardMaps[(int)ChannelState].TryGetValue(id, out var packetType))
            {
                if (!IgnoredIds.Contains(id))
                {
                    Logger.Error($"Unknown packet id : {id}");
                }
                return(null);
            }
            Debug.Assert(packetType != null, $"Error in getting packet {id}");

            var packet = (Packet)Activator.CreateInstance(packetType);

            packet.ReadPacketData(tmp);

            return(packet);
        }