public static function createFromRcon($data)
    {
        if (mb_strlen($data) < 10) {
            throw new Exception\InvalidPacket('Packet data length is less than 10 bytes');
        }

        if (!($packet = @unpack('V1id/V1type/a*body', $data))) {
            throw new Exception\InvalidPacket('Packet data cannot be unpacked');
        }

        if (count($packet) < 3)
        {
            throw new Exception\InvalidPacket('Invalid number of unpacked data, at least 3 expected');
        }

        return new static($packet['id'], $packet['type'], rtrim($packet['body']));
    }