VCS update
This commit is contained in:
parent
8e6f46d8d0
commit
ec5705d94f
@ -12,6 +12,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
|
find_package(LibArchive REQUIRED)
|
||||||
find_package(Qt6 REQUIRED COMPONENTS Widgets Network)
|
find_package(Qt6 REQUIRED COMPONENTS Widgets Network)
|
||||||
qt_standard_project_setup()
|
qt_standard_project_setup()
|
||||||
|
|
||||||
|
@ -9,7 +9,10 @@ qt_add_executable(PunkLauncher
|
|||||||
../resources/mainwindow.ui
|
../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
|
set_target_properties(PunkLauncher PROPERTIES
|
||||||
WIN32_EXECUTABLE ON
|
WIN32_EXECUTABLE ON
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <qjsonobject.h>
|
#include <QJsonDocument>
|
||||||
#include <QEventLoop>
|
#include <QEventLoop>
|
||||||
|
|
||||||
#include "profile_handler/forge1_12_2.h"
|
#include "profile_handler/forge1_12_2.h"
|
||||||
@ -15,69 +15,23 @@
|
|||||||
#include "../../resources/ui_mainwindow.h"
|
#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<MainWindow *>(parent)),
|
||||||
|
app_dir(QDir(QCoreApplication::applicationDirPath()))
|
||||||
|
{
|
||||||
|
if (!mainWindow) {
|
||||||
|
qCritical() << "Failed to cast parent object to MainWindow";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Launcher::~Launcher() {
|
Launcher::~Launcher() {
|
||||||
delete process;
|
delete process;
|
||||||
}
|
delete get_args;
|
||||||
|
|
||||||
|
|
||||||
void Launcher::update() {
|
|
||||||
MainWindow *mainWindow = qobject_cast<MainWindow *>(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<int, QProcess::ExitStatus>::of(&QProcess::finished), [this, rsyncProcess, mainWindow](int, QProcess::ExitStatus) {
|
|
||||||
qDebug() << "Rsync process finished";
|
|
||||||
rsyncProcess->deleteLater(); // Удаляем процесс после завершения
|
|
||||||
emit updateFinished(); // Сигнализируем о завершении
|
|
||||||
mainWindow->ui->download_bar->setText("");
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,52 +42,137 @@ void Launcher::startProcess(QString &username, QString &uuid, QString &access_to
|
|||||||
}
|
}
|
||||||
run_status = true;
|
run_status = true;
|
||||||
|
|
||||||
MainWindow *mainWindow = qobject_cast<MainWindow *>(mainwindow);
|
selected_profile = this->mainWindow->ui->selected_profile->currentText();
|
||||||
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();
|
|
||||||
client_dir = app_dir.absolutePath() + "/" + selected_profile;
|
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();
|
java_path = json_settings["java_path"].toString();
|
||||||
RAM = json_settings["RAM"].toString();
|
RAM = json_settings["RAM"].toString();
|
||||||
garbarge_collector = json_settings["garbarge_collector"].toString();
|
garbarge_collector = json_settings["garbarge_collector"].toString();
|
||||||
|
|
||||||
//
|
|
||||||
// Выбор профиля
|
|
||||||
//
|
|
||||||
if (selected_profile == "ZombieExtrieme") {
|
if (selected_profile == "ZombieExtrieme") {
|
||||||
arguments = get_args->getCrossPlatformArgs(RAM, username, uuid, access_token, garbarge_collector);
|
arguments = get_args->getCrossPlatformArgs(RAM, username, uuid, access_token, garbarge_collector);
|
||||||
java_path = java_path.isEmpty() ?
|
java_path = java_path.isEmpty() ? app_dir.absolutePath() + "/java/zulu8.84.0.15-ca-jre8.0.442-linux_x64/bin/java" : java_path;
|
||||||
app_dir.absolutePath() + "/java/zulu8.84.0.15-ca-jre8.0.442-linux_x64/bin/java" : java_path;
|
|
||||||
RAM = RAM.isEmpty() ? "4096M" : RAM;
|
RAM = RAM.isEmpty() ? "4096M" : RAM;
|
||||||
garbarge_collector = garbarge_collector.isEmpty() ? "default_collector" : garbarge_collector;
|
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->setWorkingDirectory(client_dir);
|
||||||
process->start(java_path, arguments);
|
process->start(java_path, arguments);
|
||||||
|
|
||||||
if (!process->waitForStarted()) {
|
if (!process->waitForStarted()) {
|
||||||
qDebug() << "Failed to start process";
|
qDebug() << "Failed to start process";
|
||||||
qDebug() << process->errorString();
|
qDebug() << process->errorString();
|
||||||
run_status = false; // Сбрасываем статус, если процесс не запустился
|
run_status = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Скрытие лаунчера
|
|
||||||
connect(process,
|
connect(process,
|
||||||
QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
|
QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
|
||||||
[mainWindow, this](int, QProcess::ExitStatus) {
|
[this](int, QProcess::ExitStatus) {
|
||||||
mainWindow->show();
|
this->mainWindow->show();
|
||||||
run_status = false; // Сбрасываем статус после завершения процесса
|
run_status = false;
|
||||||
});
|
});
|
||||||
mainWindow->hide();
|
|
||||||
|
this->mainWindow->hide();
|
||||||
qDebug() << "Process started successfully";
|
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<int, QProcess::ExitStatus>::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<int, QProcess::ExitStatus>::of(&QProcess::finished), [this, rsyncProcess2]() {
|
||||||
|
rsyncProcess2->deleteLater();
|
||||||
|
emit updateFinished();
|
||||||
|
this->mainWindow->ui->download_bar->setText("");
|
||||||
|
qDebug() << "Rsync process finished";
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -7,34 +7,40 @@
|
|||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
|
||||||
#include "profile_handler/forge1_12_2.h"
|
#include "profile_handler/forge1_12_2.h"
|
||||||
|
|
||||||
|
class MainWindow;
|
||||||
|
|
||||||
class Launcher : public QObject {
|
class Launcher : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Launcher(QObject *mainwindow = nullptr);
|
explicit Launcher(QObject *mainwindow = nullptr);
|
||||||
~Launcher();
|
~Launcher();
|
||||||
void startProcess(QString &username, QString &uuid, QString &access_token);
|
void startProcess(QString &username, QString &uuid, QString &access_token);
|
||||||
void update(); // Обновленный метод update
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void updateFinished(); // Сигнал, который будет испускаться после завершения update
|
void updateFinished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void update();
|
||||||
|
void streamingUnpack();
|
||||||
|
|
||||||
QProcess *process;
|
QProcess *process;
|
||||||
QObject *mainwindow;
|
QObject *mainwindow;
|
||||||
forge1_12_2 *get_args;
|
forge1_12_2 *get_args;
|
||||||
bool run_status;
|
bool run_status;
|
||||||
|
MainWindow *mainWindow;
|
||||||
// Переменные для запуска клиента
|
QDir app_dir;
|
||||||
QString client_dir;
|
QString client_dir;
|
||||||
|
|
||||||
|
QStringList sync_dirs;
|
||||||
|
QStringList sync_files;
|
||||||
|
|
||||||
|
QString selected_profile;
|
||||||
QString RAM;
|
QString RAM;
|
||||||
QString java_path;
|
QString java_path;
|
||||||
QString garbarge_collector;
|
QString garbarge_collector;
|
||||||
|
QString version;
|
||||||
QJsonObject json_settings;
|
QJsonObject json_settings;
|
||||||
QStringList arguments;
|
QStringList arguments;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -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"
|
<< "-Djava.library.path=../versions/1.12.2-forge-14.23.5.2860/natives"
|
||||||
<< "-Xmx" + RAM
|
<< "-Xmx" + RAM
|
||||||
<< "-cp"
|
<< "-cp"
|
||||||
<< "../libraries/net/minecraftforge/forge/1.12.2-14.23.5.2860/forge-1.12.2-14.23.5.2860.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/org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.jar:"
|
"../libraries/1.12.2/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/1.12.2/net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar:"
|
||||||
"../libraries/org/jline/jline/3.5.1/jline-3.5.1.jar:"
|
"../libraries/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/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/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/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/lzma/lzma/0.0.1/lzma-0.0.1.jar:"
|
||||||
"../libraries/java3d/vecmath/1.5.2/vecmath-1.5.2.jar:"
|
"../libraries/1.12.2/java3d/vecmath/1.5.2/vecmath-1.5.2.jar:"
|
||||||
"../libraries/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar:"
|
"../libraries/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/com/mojang/patchy/1.3.9/patchy-1.3.9.jar:"
|
||||||
"../libraries/oshi-project/oshi-core/1.1/oshi-core-1.1.jar:"
|
"../libraries/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/com/ibm/icu/icu4j-core-mojang/51.2/icu4j-core-mojang-51.2.jar:"
|
||||||
"../libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar:"
|
"../libraries/1.12.2/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar:"
|
||||||
"../libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar:"
|
"../libraries/1.12.2/com/paulscode/codecwav/20101023/codecwav-20101023.jar:"
|
||||||
"../libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar:"
|
"../libraries/1.12.2/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar:"
|
||||||
"../libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar:"
|
"../libraries/1.12.2/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar:"
|
||||||
"../libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar:"
|
"../libraries/1.12.2/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar:"
|
||||||
"../libraries/io/netty/netty-all/4.1.9.Final/netty-all-4.1.9.Final.jar:"
|
"../libraries/1.12.2/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/1.12.2/com/google/guava/guava/21.0/guava-21.0.jar:"
|
||||||
"../libraries/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:"
|
"../libraries/1.12.2/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/1.12.2/commons-io/commons-io/2.5/commons-io-2.5.jar:"
|
||||||
"../libraries/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:"
|
"../libraries/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/com/mojang/authlib/1.5.25/authlib-1.5.25.jar:"
|
||||||
"../libraries/com/mojang/realms/1.10.22/realms-1.10.22.jar:"
|
"../libraries/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/1.12.2/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/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"
|
"../versions/1.12.2-forge-14.23.5.2860/1.12.2-forge-14.23.5.2860.jar"
|
||||||
|
|
||||||
<< "-Dfml.ignoreInvalidMinecraftCertificates=true"
|
<< "-Dfml.ignoreInvalidMinecraftCertificates=true"
|
||||||
<< "-Dfml.ignorePatchDiscrepancies=true"
|
<< "-Dfml.ignorePatchDiscrepancies=true"
|
||||||
<< "-Djava.net.preferIPv4Stack=true"
|
<< "-Djava.net.preferIPv4Stack=true"
|
||||||
<< "-Dminecraft.applet.TargetDirectory=./"
|
<< "-Dminecraft.applet.TargetDirectory=./"
|
||||||
<< "-DlibraryDirectory=../libraries"
|
<< "-DlibraryDirectory=../libraries/1.12.2"
|
||||||
<< "-Dlog4j.configurationFile=./assets/log_configs/client-1.12.xml"
|
<< "-Dlog4j.configurationFile=./assets/1.12.2/log_configs/client-1.12.xml"
|
||||||
// Garbarge Collector общие настройки
|
// Garbarge Collector общие настройки
|
||||||
<< "-XX:+UnlockExperimentalVMOptions"
|
<< "-XX:+UnlockExperimentalVMOptions"
|
||||||
//<< "-XX:+UnlockDiagnosticVMOptions"
|
//<< "-XX:+UnlockDiagnosticVMOptions"
|
||||||
@ -123,7 +123,7 @@ QStringList forge1_12_2::getCrossPlatformArgs(QString &RAM, QString &username, Q
|
|||||||
<< "--username" << username
|
<< "--username" << username
|
||||||
<< "--version" << "1.12.2-forge-14.23.5.2860"
|
<< "--version" << "1.12.2-forge-14.23.5.2860"
|
||||||
<< "--gameDir" << "./"
|
<< "--gameDir" << "./"
|
||||||
<< "--assetsDir" << "../assets"
|
<< "--assetsDir" << "../assets/1.12.2"
|
||||||
<< "--assetIndex" << "1.12"
|
<< "--assetIndex" << "1.12"
|
||||||
<< "--uuid" << uuid
|
<< "--uuid" << uuid
|
||||||
<< "--accessToken" << access_token
|
<< "--accessToken" << access_token
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
#include "rsync.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Rsync::Rsync() {}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
#ifndef RSYNC_H
|
|
||||||
#define RSYNC_H
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Rsync {
|
|
||||||
public:
|
|
||||||
Rsync();
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,6 +0,0 @@
|
|||||||
#include "rsync.h"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Rsync::Rsync() {}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
|||||||
#ifndef RSYNC_H
|
|
||||||
#define RSYNC_H
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Rsync {
|
|
||||||
public:
|
|
||||||
Rsync();
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
@ -172,7 +172,7 @@ QLineEdit::placeholder {
|
|||||||
}</string>
|
}</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>2</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="load"/>
|
<widget class="QWidget" name="load"/>
|
||||||
<widget class="QWidget" name="auth">
|
<widget class="QWidget" name="auth">
|
||||||
@ -520,6 +520,9 @@ QLineEdit::placeholder {
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Не выходить с аккаунта</string>
|
<string>Не выходить с аккаунта</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
Loading…
Reference in New Issue
Block a user