revert add launcher folder and some checks to it
This commit is contained in:
2026-08-22 23:39:46 +00:00
parent af4230500e
commit 2c51c4736a
13 changed files with 169 additions and 328 deletions
+17 -20
View File
@@ -45,14 +45,15 @@ bool isNativeLibraryFile(const QString &fileName)
for (const QString &suffix : suffixes)
if (fileName.endsWith(suffix, Qt::CaseInsensitive))
return true;
return fileName.contains(QStringLiteral(".so.")); // libfoo.so.1
return fileName.contains(QStringLiteral(".so.")); // libfoo.so.1
}
} // namespace
GameLauncher::GameLauncher(QObject *parent)
: QObject(parent)
{}
{
}
bool GameLauncher::isRunning() const
{
@@ -100,7 +101,7 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
QStringList classpath;
for (const MinecraftLibrary &library : version.libraries) {
if (library.native)
continue; // натив-библиотеки только распаковываются
continue; // натив-библиотеки только распаковываются
classpath << nativeToken(libraryPath(options.gameDir, library));
}
classpath << nativeToken(version.clientJarPath);
@@ -113,11 +114,11 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
variables[QStringLiteral("auth_player_name")] = options.playerName;
variables[QStringLiteral("auth_uuid")] = options.uuid;
variables[QStringLiteral("auth_access_token")] = options.accessToken;
variables[QStringLiteral("auth_session")] = QStringLiteral("token:%1:%2")
.arg(options.accessToken, options.uuid);
variables[QStringLiteral("auth_session")] =
QStringLiteral("token:%1:%2").arg(options.accessToken, options.uuid);
variables[QStringLiteral("auth_xuid")] = QStringLiteral("0");
variables[QStringLiteral("clientid")] = options.clientToken.isEmpty() ? QStringLiteral("0")
: options.clientToken;
variables[QStringLiteral("clientid")] =
options.clientToken.isEmpty() ? QStringLiteral("0") : options.clientToken;
variables[QStringLiteral("user_type")] = options.userType;
variables[QStringLiteral("user_properties")] = QStringLiteral("{}");
variables[QStringLiteral("version_name")] = version.id;
@@ -125,11 +126,11 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
variables[QStringLiteral("game_directory")] = nativeToken(options.gameDir);
variables[QStringLiteral("assets_root")] = nativeToken(assetsRoot);
variables[QStringLiteral("assets_index_name")] = version.assetIndexId;
variables[QStringLiteral("game_assets")] = nativeToken(
legacyAssets ? assetsRoot + QStringLiteral("/virtual/legacy") : assetsRoot);
variables[QStringLiteral("game_assets")] =
nativeToken(legacyAssets ? assetsRoot + QStringLiteral("/virtual/legacy") : assetsRoot);
variables[QStringLiteral("natives_directory")] = nativeToken(nativesDir);
variables[QStringLiteral("library_directory")] = nativeToken(options.gameDir
+ QStringLiteral("/libraries"));
variables[QStringLiteral("library_directory")] =
nativeToken(options.gameDir + QStringLiteral("/libraries"));
variables[QStringLiteral("classpath")] = classpath.join(kClasspathSeparator);
variables[QStringLiteral("classpath_separator")] = QString(kClasspathSeparator);
variables[QStringLiteral("primary_jar")] = nativeToken(version.clientJarPath);
@@ -173,8 +174,8 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
}
// Разрешение окна: у старых версий фич-флага нет, аргументы всё равно понимаются.
if (options.windowWidth > 0 && options.windowHeight > 0 && !version.hasCustomResolutionArgs
&& !arguments.contains(QStringLiteral("--width"))) {
if (options.windowWidth > 0 && options.windowHeight > 0
&& !version.hasCustomResolutionArgs && !arguments.contains(QStringLiteral("--width"))) {
arguments << QStringLiteral("--width") << QString::number(options.windowWidth)
<< QStringLiteral("--height") << QString::number(options.windowHeight);
}
@@ -186,8 +187,7 @@ QStringList GameLauncher::buildArguments(const LaunchOptions &options,
arguments << QStringLiteral("--quickPlayMultiplayer") << options.serverAddress;
} else {
const int colon = options.serverAddress.lastIndexOf(u':');
const QString host = colon > 0 ? options.serverAddress.left(colon)
: options.serverAddress;
const QString host = colon > 0 ? options.serverAddress.left(colon) : options.serverAddress;
const QString port = colon > 0 ? options.serverAddress.mid(colon + 1)
: QStringLiteral("25565");
arguments << QStringLiteral("--server") << host << QStringLiteral("--port") << port;
@@ -247,7 +247,7 @@ bool GameLauncher::extractNatives(const LaunchOptions &options,
const QString target = nativesDir + u'/' + fileName;
const QByteArray data = reader.fileData(entry.filePath);
if (QFileInfo(target).size() == data.size() && QFile::exists(target))
continue; // уже распаковано этим же лаунчером
continue; // уже распаковано этим же лаунчером
QFile file(target);
if (!file.open(QIODevice::WriteOnly) || file.write(data) != data.size()) {
@@ -289,10 +289,7 @@ bool GameLauncher::launch(const LaunchOptions &options,
return false;
emit progress(tr("Поиск Java %1…").arg(version.javaMajor));
const QString java = JavaLocator::select(options.gameDir,
version.javaMajor,
options.javaPath,
error);
const QString java = JavaLocator::select(options.gameDir, version.javaMajor, options.javaPath, error);
if (java.isEmpty())
return false;