diff --git a/CMakeLists.txt b/CMakeLists.txt index f880f4e..fc82036 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +find_package(LibArchive REQUIRED) find_package(Qt6 REQUIRED COMPONENTS Widgets Network) qt_standard_project_setup() diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 1e0b25b..db22c10 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -9,7 +9,10 @@ qt_add_executable(PunkLauncher ../resources/mainwindow.ui ) -target_link_libraries(PunkLauncher PRIVATE Qt6::Widgets Qt6::Network) +target_link_libraries(PunkLauncher PRIVATE + Qt6::Widgets + Qt6::Network + LibArchive::LibArchive) set_target_properties(PunkLauncher PROPERTIES WIN32_EXECUTABLE ON diff --git a/src/app/launcher/launcher.cpp b/src/app/launcher/launcher.cpp index a3a03b0..691a1e9 100644 --- a/src/app/launcher/launcher.cpp +++ b/src/app/launcher/launcher.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include "profile_handler/forge1_12_2.h" @@ -15,69 +15,23 @@ #include "../../resources/ui_mainwindow.h" -Launcher::Launcher(QObject *mainwindow) : QObject(mainwindow), process(new QProcess(this)), mainwindow(mainwindow), get_args(new forge1_12_2()), run_status(false) { +Launcher::Launcher(QObject *parent) : + QObject(parent), + process(new QProcess(this)), + get_args(new forge1_12_2()), + run_status(false), + mainWindow(qobject_cast(parent)), + app_dir(QDir(QCoreApplication::applicationDirPath())) +{ + if (!mainWindow) { + qCritical() << "Failed to cast parent object to MainWindow"; + } } Launcher::~Launcher() { delete process; -} - - -void Launcher::update() { - MainWindow *mainWindow = qobject_cast(mainwindow); - QDir app_dir(QCoreApplication::applicationDirPath()); - - // Создаем процесс для выполнения команды rsync - QProcess *rsyncProcess = new QProcess(this); - rsyncProcess->setWorkingDirectory(app_dir.absolutePath()); - - - // Подключаем вывод процесса к текстовому полю download_bar - connect(rsyncProcess, &QProcess::readyReadStandardOutput, [rsyncProcess, mainWindow]() { - QString output = rsyncProcess->readAllStandardOutput(); - QStringList lines = output.split('\r', Qt::SkipEmptyParts); - QString lastLine = lines.isEmpty() ? "" : lines.last().trimmed(); - if (!lastLine.isEmpty()) { - QRegularExpression regex(R"((\d+,\d+,\d+)\s+(\d+%)\s+(\d+\.\d+MB\/s)\s+(\d+:\d+:\d+))"); - QRegularExpressionMatch match = regex.match(lastLine); - if (match.hasMatch()) { - QString progress = match.captured(1); - QString percent = match.captured(2); - QString speed = match.captured(3); - QString time = match.captured(4); - QString displayText = QString("%1 %2 %3 %4").arg(progress, percent, speed, time); - mainWindow->ui->download_bar->setText(displayText); - } - } - }); - - // Подключаем вывод stderr к текстовому полю download_bar - connect(rsyncProcess, &QProcess::readyReadStandardError, [rsyncProcess, mainWindow]() { - QString errorOutput = rsyncProcess->readAllStandardError(); - mainWindow->ui->download_bar->setText(errorOutput); - qDebug() << errorOutput; - }); - - // Выполняем команду rsync - QStringList rsyncArgs; - rsyncArgs << "-az" << "--info=progress2" << "punkcraft.ru::PunkCraft" << "./"; - rsyncProcess->start("rsync", rsyncArgs); - - if (!rsyncProcess->waitForStarted()) { - qDebug() << "Failed to start rsync process"; - qDebug() << rsyncProcess->errorString(); - emit updateFinished(); // Сигнализируем о завершении (даже если произошла ошибка) - return; - } - - // Ожидаем завершения процесса rsync - connect(rsyncProcess, QOverload::of(&QProcess::finished), [this, rsyncProcess, mainWindow](int, QProcess::ExitStatus) { - qDebug() << "Rsync process finished"; - rsyncProcess->deleteLater(); // Удаляем процесс после завершения - emit updateFinished(); // Сигнализируем о завершении - mainWindow->ui->download_bar->setText(""); - }); + delete get_args; } @@ -88,52 +42,137 @@ void Launcher::startProcess(QString &username, QString &uuid, QString &access_to } run_status = true; - MainWindow *mainWindow = qobject_cast(mainwindow); - QDir app_dir(QCoreApplication::applicationDirPath()); - - // Обновление клиента - QEventLoop loop; - connect(this, &Launcher::updateFinished, &loop, &QEventLoop::quit); // Ожидаем сигнала updateFinished - update(); // Запускаем асинхронное обновление - loop.exec(); // Блокируем выполнение до завершения update - - // Подготовка параметров запуска - QString selected_profile = mainWindow->ui->selected_profile->currentText(); + selected_profile = this->mainWindow->ui->selected_profile->currentText(); client_dir = app_dir.absolutePath() + "/" + selected_profile; - json_settings = mainWindow->settings->loadFromJson(selected_profile); + json_settings = this->mainWindow->settings->loadFromJson(selected_profile); java_path = json_settings["java_path"].toString(); RAM = json_settings["RAM"].toString(); garbarge_collector = json_settings["garbarge_collector"].toString(); - // - // Выбор профиля - // if (selected_profile == "ZombieExtrieme") { arguments = get_args->getCrossPlatformArgs(RAM, username, uuid, access_token, garbarge_collector); - java_path = java_path.isEmpty() ? - app_dir.absolutePath() + "/java/zulu8.84.0.15-ca-jre8.0.442-linux_x64/bin/java" : java_path; + java_path = java_path.isEmpty() ? app_dir.absolutePath() + "/java/zulu8.84.0.15-ca-jre8.0.442-linux_x64/bin/java" : java_path; RAM = RAM.isEmpty() ? "4096M" : RAM; garbarge_collector = garbarge_collector.isEmpty() ? "default_collector" : garbarge_collector; + version = "1.12.2"; } - // Запуск процесса + if (version == "1.12.2") { + sync_dirs + << "./java/zulu8.84.0.15-ca-jre8.0.442-linux_x64" + << "./versions/1.12.2" + << "./libraries/1.12.2" + << "./" + selected_profile; + sync_files + << "./PunkLauncher"; + } + + QEventLoop loop; + connect(this, &Launcher::updateFinished, &loop, &QEventLoop::quit); + update(); + loop.exec(); + process->setWorkingDirectory(client_dir); process->start(java_path, arguments); if (!process->waitForStarted()) { qDebug() << "Failed to start process"; qDebug() << process->errorString(); - run_status = false; // Сбрасываем статус, если процесс не запустился + run_status = false; return; } - // Скрытие лаунчера connect(process, QOverload::of(&QProcess::finished), - [mainWindow, this](int, QProcess::ExitStatus) { - mainWindow->show(); - run_status = false; // Сбрасываем статус после завершения процесса + [this](int, QProcess::ExitStatus) { + this->mainWindow->show(); + run_status = false; }); - mainWindow->hide(); + + this->mainWindow->hide(); qDebug() << "Process started successfully"; } + + +void Launcher::update() { + QProcess *rsyncProcess = new QProcess(this); + rsyncProcess->setWorkingDirectory(app_dir.absolutePath()); + + connect(rsyncProcess, &QProcess::readyReadStandardOutput, [rsyncProcess, this]() { + QString output = rsyncProcess->readAllStandardOutput(); + QStringList lines = output.split('\n'); + if (!lines.isEmpty()) { + QString lastLine = lines.last().trimmed(); + int pos = lastLine.indexOf('('); + if (pos != -1) { + lastLine = lastLine.left(pos).trimmed(); + } + if (!lastLine.isEmpty()) { + this->mainWindow->ui->download_bar->setText(lastLine); + } + } + }); + + connect(rsyncProcess, &QProcess::readyReadStandardError, [rsyncProcess, this]() { + QString errorOutput = rsyncProcess->readAllStandardError(); + this->mainWindow->ui->download_bar->setText(errorOutput); + qDebug() << errorOutput; + }); + + QStringList rsyncArgs; + rsyncArgs << "-azH" << "--info=progress2"; + for (const QString &dir : sync_dirs) { rsyncArgs << "--include" << dir + "/**"; } + for (const QString &file : sync_files) { rsyncArgs << "--include" << file; } + + QStringList excludeFiles = { + QDir::toNativeSeparators("./" + selected_profile + "/options.txt"), + QDir::toNativeSeparators("./" + selected_profile + "/optionsof.txt"), + QDir::toNativeSeparators("./" + selected_profile + "/optionsshaders.txt") + }; + + for (const QString &filePath : excludeFiles) { + QFileInfo fileInfo(filePath); + if (fileInfo.exists() && fileInfo.isFile()) { + QString relativePath = QDir().relativeFilePath(fileInfo.absoluteFilePath()); + rsyncArgs << "--exclude" << relativePath; + } + } + + rsyncArgs << "--exclude" << "./**"; + rsyncArgs << "punkcraft.ru::PunkCraft/unix/uncompressed/" << "./"; + + rsyncProcess->start("rsync", rsyncArgs); + if (!rsyncProcess->waitForStarted()) { + qDebug() << "Failed to start rsync process"; + qDebug() << rsyncProcess->errorString(); + emit updateFinished(); + return; + } + + connect(rsyncProcess, QOverload::of(&QProcess::finished), [this, rsyncProcess]() { + rsyncProcess->deleteLater(); + QProcess *rsyncProcess2 = new QProcess(this); + rsyncProcess2->setWorkingDirectory(app_dir.absolutePath()); + + QStringList modsArgs; + modsArgs + << "-azH" << "--info=progress2" << "--delete-after" + << "--include=" + selected_profile + << "--include=" + selected_profile + "/mods/" + << "--include=" + selected_profile + "/mods/**" + << "--include=" + selected_profile + "/resourcepacks/" + << "--include=" + selected_profile + "/resourcepacks/**" + << "--exclude=*" + << "--exclude=" + selected_profile + "/*" + << "punkcraft.ru::PunkCraft/unix/uncompressed/" << "./"; + + rsyncProcess2->start("rsync", modsArgs); + + connect(rsyncProcess2, QOverload::of(&QProcess::finished), [this, rsyncProcess2]() { + rsyncProcess2->deleteLater(); + emit updateFinished(); + this->mainWindow->ui->download_bar->setText(""); + qDebug() << "Rsync process finished"; + }); + }); +} diff --git a/src/app/launcher/launcher.h b/src/app/launcher/launcher.h index 07e39d4..57b355a 100644 --- a/src/app/launcher/launcher.h +++ b/src/app/launcher/launcher.h @@ -7,34 +7,40 @@ #include #include #include - #include "profile_handler/forge1_12_2.h" +class MainWindow; + class Launcher : public QObject { Q_OBJECT - public: explicit Launcher(QObject *mainwindow = nullptr); ~Launcher(); void startProcess(QString &username, QString &uuid, QString &access_token); - void update(); // Обновленный метод update signals: - void updateFinished(); // Сигнал, который будет испускаться после завершения update - + void updateFinished(); private: + void update(); + void streamingUnpack(); + QProcess *process; QObject *mainwindow; forge1_12_2 *get_args; bool run_status; - - // Переменные для запуска клиента + MainWindow *mainWindow; + QDir app_dir; QString client_dir; + + QStringList sync_dirs; + QStringList sync_files; + + QString selected_profile; QString RAM; QString java_path; QString garbarge_collector; + QString version; QJsonObject json_settings; QStringList arguments; }; - #endif diff --git a/src/app/launcher/profile_handler/forge1_12_2.cpp b/src/app/launcher/profile_handler/forge1_12_2.cpp index f6e1480..c41274d 100644 --- a/src/app/launcher/profile_handler/forge1_12_2.cpp +++ b/src/app/launcher/profile_handler/forge1_12_2.cpp @@ -21,64 +21,64 @@ QStringList forge1_12_2::getCrossPlatformArgs(QString &RAM, QString &username, Q << "-Djava.library.path=../versions/1.12.2-forge-14.23.5.2860/natives" << "-Xmx" + RAM << "-cp" - << "../libraries/net/minecraftforge/forge/1.12.2-14.23.5.2860/forge-1.12.2-14.23.5.2860.jar:" - "../libraries/org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.jar:" - "../libraries/net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar:" - "../libraries/org/jline/jline/3.5.1/jline-3.5.1.jar:" - "../libraries/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar:" - "../libraries/com/typesafe/config/1.2.1/config-1.2.1.jar:" - "../libraries/org/scala-lang/scala-actors-migration_2.11/1.1.0/scala-actors-migration_2.11-1.1.0.jar:" - "../libraries/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar:" - "../libraries/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2_mc/scala-continuations-library_2.11-1.0.2_mc.jar:" - "../libraries/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2_mc/scala-continuations-plugin_2.11.1-1.0.2_mc.jar:" - "../libraries/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar:" - "../libraries/org/scala-lang/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar:" - "../libraries/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar:" - "../libraries/org/scala-lang/scala-swing_2.11/1.0.1/scala-swing_2.11-1.0.1.jar:" - "../libraries/org/scala-lang/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar:" - "../libraries/lzma/lzma/0.0.1/lzma-0.0.1.jar:" - "../libraries/java3d/vecmath/1.5.2/vecmath-1.5.2.jar:" - "../libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar:" - "../libraries/org/apache/maven/maven-artifact/3.5.3/maven-artifact-3.5.3.jar:" - "../libraries/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar:" - "../libraries/org/apache/logging/log4j/log4j-api/2.15.0/log4j-api-2.15.0.jar:" - "../libraries/org/apache/logging/log4j/log4j-core/2.15.0/log4j-core-2.15.0.jar:" - "../libraries/com/mojang/patchy/1.3.9/patchy-1.3.9.jar:" - "../libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar:" - "../libraries/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar:" - "../libraries/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar:" - "../libraries/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar:" - "../libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar:" - "../libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar:" - "../libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar:" - "../libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar:" - "../libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar:" - "../libraries/io/netty/netty-all/4.1.9.Final/netty-all-4.1.9.Final.jar:" - "../libraries/com/google/guava/guava/21.0/guava-21.0.jar:" - "../libraries/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:" - "../libraries/commons-io/commons-io/2.5/commons-io-2.5.jar:" - "../libraries/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:" - "../libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar:" - "../libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar:" - "../libraries/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar:" - "../libraries/com/mojang/authlib/1.5.25/authlib-1.5.25.jar:" - "../libraries/com/mojang/realms/1.10.22/realms-1.10.22.jar:" - "../libraries/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar:" - "../libraries/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar:" - "../libraries/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:" - "../libraries/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:" - "../libraries/it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.jar:" - "../libraries/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar:" - "../libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar:" - "../libraries/com/mojang/text2speech/1.10.3/text2speech-1.10.3.jar:" + << "../libraries/1.12.2/net/minecraftforge/forge/1.12.2-14.23.5.2860/forge-1.12.2-14.23.5.2860.jar:" + "../libraries/1.12.2/org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.jar:" + "../libraries/1.12.2/net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar:" + "../libraries/1.12.2/org/jline/jline/3.5.1/jline-3.5.1.jar:" + "../libraries/1.12.2/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar:" + "../libraries/1.12.2/com/typesafe/config/1.2.1/config-1.2.1.jar:" + "../libraries/1.12.2/org/scala-lang/scala-actors-migration_2.11/1.1.0/scala-actors-migration_2.11-1.1.0.jar:" + "../libraries/1.12.2/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar:" + "../libraries/1.12.2/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2_mc/scala-continuations-library_2.11-1.0.2_mc.jar:" + "../libraries/1.12.2/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2_mc/scala-continuations-plugin_2.11.1-1.0.2_mc.jar:" + "../libraries/1.12.2/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar:" + "../libraries/1.12.2/org/scala-lang/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar:" + "../libraries/1.12.2/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar:" + "../libraries/1.12.2/org/scala-lang/scala-swing_2.11/1.0.1/scala-swing_2.11-1.0.1.jar:" + "../libraries/1.12.2/org/scala-lang/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar:" + "../libraries/1.12.2/lzma/lzma/0.0.1/lzma-0.0.1.jar:" + "../libraries/1.12.2/java3d/vecmath/1.5.2/vecmath-1.5.2.jar:" + "../libraries/1.12.2/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar:" + "../libraries/1.12.2/org/apache/maven/maven-artifact/3.5.3/maven-artifact-3.5.3.jar:" + "../libraries/1.12.2/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar:" + "../libraries/1.12.2/org/apache/logging/log4j/log4j-api/2.15.0/log4j-api-2.15.0.jar:" + "../libraries/1.12.2/org/apache/logging/log4j/log4j-core/2.15.0/log4j-core-2.15.0.jar:" + "../libraries/1.12.2/com/mojang/patchy/1.3.9/patchy-1.3.9.jar:" + "../libraries/1.12.2/oshi-project/oshi-core/1.1/oshi-core-1.1.jar:" + "../libraries/1.12.2/net/java/dev/jna/jna/4.4.0/jna-4.4.0.jar:" + "../libraries/1.12.2/net/java/dev/jna/platform/3.4.0/platform-3.4.0.jar:" + "../libraries/1.12.2/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar:" + "../libraries/1.12.2/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar:" + "../libraries/1.12.2/com/paulscode/codecwav/20101023/codecwav-20101023.jar:" + "../libraries/1.12.2/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar:" + "../libraries/1.12.2/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar:" + "../libraries/1.12.2/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar:" + "../libraries/1.12.2/io/netty/netty-all/4.1.9.Final/netty-all-4.1.9.Final.jar:" + "../libraries/1.12.2/com/google/guava/guava/21.0/guava-21.0.jar:" + "../libraries/1.12.2/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:" + "../libraries/1.12.2/commons-io/commons-io/2.5/commons-io-2.5.jar:" + "../libraries/1.12.2/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:" + "../libraries/1.12.2/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar:" + "../libraries/1.12.2/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar:" + "../libraries/1.12.2/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar:" + "../libraries/1.12.2/com/mojang/authlib/1.5.25/authlib-1.5.25.jar:" + "../libraries/1.12.2/com/mojang/realms/1.10.22/realms-1.10.22.jar:" + "../libraries/1.12.2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar:" + "../libraries/1.12.2/org/apache/httpcomponents/httpclient/4.3.3/httpclient-4.3.3.jar:" + "../libraries/1.12.2/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:" + "../libraries/1.12.2/org/apache/httpcomponents/httpcore/4.3.2/httpcore-4.3.2.jar:" + "../libraries/1.12.2/it/unimi/dsi/fastutil/7.1.0/fastutil-7.1.0.jar:" + "../libraries/1.12.2/org/lwjgl/lwjgl/lwjgl/2.9.4-nightly-20150209/lwjgl-2.9.4-nightly-20150209.jar:" + "../libraries/1.12.2/org/lwjgl/lwjgl/lwjgl_util/2.9.4-nightly-20150209/lwjgl_util-2.9.4-nightly-20150209.jar:" + "../libraries/1.12.2/com/mojang/text2speech/1.10.3/text2speech-1.10.3.jar:" "../versions/1.12.2-forge-14.23.5.2860/1.12.2-forge-14.23.5.2860.jar" << "-Dfml.ignoreInvalidMinecraftCertificates=true" << "-Dfml.ignorePatchDiscrepancies=true" << "-Djava.net.preferIPv4Stack=true" << "-Dminecraft.applet.TargetDirectory=./" - << "-DlibraryDirectory=../libraries" - << "-Dlog4j.configurationFile=./assets/log_configs/client-1.12.xml" + << "-DlibraryDirectory=../libraries/1.12.2" + << "-Dlog4j.configurationFile=./assets/1.12.2/log_configs/client-1.12.xml" // Garbarge Collector общие настройки << "-XX:+UnlockExperimentalVMOptions" //<< "-XX:+UnlockDiagnosticVMOptions" @@ -123,7 +123,7 @@ QStringList forge1_12_2::getCrossPlatformArgs(QString &RAM, QString &username, Q << "--username" << username << "--version" << "1.12.2-forge-14.23.5.2860" << "--gameDir" << "./" - << "--assetsDir" << "../assets" + << "--assetsDir" << "../assets/1.12.2" << "--assetIndex" << "1.12" << "--uuid" << uuid << "--accessToken" << access_token diff --git a/src/app/vcs/cwrsync.cpp b/src/app/vcs/cwrsync.cpp deleted file mode 100644 index 3ce65de..0000000 --- a/src/app/vcs/cwrsync.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "rsync.h" - - - -Rsync::Rsync() {} - diff --git a/src/app/vcs/cwrsync.h b/src/app/vcs/cwrsync.h deleted file mode 100644 index 56faacc..0000000 --- a/src/app/vcs/cwrsync.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef RSYNC_H -#define RSYNC_H - - - -class Rsync { -public: - Rsync(); - - -private: -}; - -#endif diff --git a/src/app/vcs/rsync.cpp b/src/app/vcs/rsync.cpp deleted file mode 100644 index 3ce65de..0000000 --- a/src/app/vcs/rsync.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "rsync.h" - - - -Rsync::Rsync() {} - diff --git a/src/app/vcs/rsync.h b/src/app/vcs/rsync.h deleted file mode 100644 index 56faacc..0000000 --- a/src/app/vcs/rsync.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef RSYNC_H -#define RSYNC_H - - - -class Rsync { -public: - Rsync(); - - -private: -}; - -#endif diff --git a/src/resources/mainwindow.ui b/src/resources/mainwindow.ui index 9bcaec6..c37bdb2 100644 --- a/src/resources/mainwindow.ui +++ b/src/resources/mainwindow.ui @@ -172,7 +172,7 @@ QLineEdit::placeholder { } - 2 + 1 @@ -520,6 +520,9 @@ QLineEdit::placeholder { Не выходить с аккаунта + + true +