public override void Read(BinaryReader reader)
        {
            base.Read(reader);

            ib = new Value <ulong>(reader.ReadUInt64());

            int itemStackLengthA = (int)reader.ReadByte();

            gb = new ItemStack[itemStackLengthA];
            for (int i = 0; i < itemStackLengthA; ++i)
            {
                gb[i].Read(reader);
            }

            int itemStackLengthB = (int)reader.ReadByte();

            kb = new ItemStack[itemStackLengthB];
            for (int j = 0; j < itemStackLengthB; ++j)
            {
                kb[j].Read(reader);
            }

            fd.Read(reader);
            mb.Read(reader);

            hb = new Value <int>(reader.ReadInt32());
            qd = new Value <int>((int)reader.ReadInt16());
            yd = new Value <int>((int)reader.ReadInt16());
            tb.Read(reader);
        }
        public override void Read(BinaryReader reader)
        {
            base.Read(reader);

            ib = new Value <ulong>(reader.ReadUInt64());

            int itemStackLengthA = (int)reader.ReadByte();

            gb = new ItemStack[itemStackLengthA];
            for (int i = 0; i < itemStackLengthA; ++i)
            {
                gb[i].Read(reader);
            }

            int itemStackLengthB = (int)reader.ReadByte();

            kb = new ItemStack[itemStackLengthB];
            for (int j = 0; j < itemStackLengthB; ++j)
            {
                kb[j].Read(reader);
            }

            xb.Read(reader);
            mb.Read(reader);

            hb = new Value <int>(reader.ReadInt32());
            tb.Read(reader);
            isCooking = new Value <bool>(reader.ReadBoolean());
            db        = new Value <float>(reader.ReadSingle());
        }