diff options
author | dada513 <dada513@protonmail.com> | 2021-12-31 18:05:40 +0100 |
---|---|---|
committer | dada513 <dada513@protonmail.com> | 2021-12-31 18:05:40 +0100 |
commit | fa98ed3ccd74cbf0228baf13851b6bb6d17d51a3 (patch) | |
tree | 5a300af57c0207d38980319d54dc04218828aa1e /launcher/minecraft | |
parent | 0c177b1086d69993e012ba1fbed1adf6bfe04144 (diff) | |
parent | 9579231ccc36d9d32f4d5571ced91e8fe7851643 (diff) | |
download | PrismLauncher-fa98ed3ccd74cbf0228baf13851b6bb6d17d51a3.tar.gz PrismLauncher-fa98ed3ccd74cbf0228baf13851b6bb6d17d51a3.tar.bz2 PrismLauncher-fa98ed3ccd74cbf0228baf13851b6bb6d17d51a3.zip |
Merge remote-tracking branch 'upstream/develop' into upstream_update
Diffstat (limited to 'launcher/minecraft')
-rw-r--r-- | launcher/minecraft/AssetsUtils.cpp | 4 | ||||
-rw-r--r-- | launcher/minecraft/MinecraftInstance.cpp | 10 | ||||
-rw-r--r-- | launcher/minecraft/OpSys.cpp | 4 | ||||
-rw-r--r-- | launcher/minecraft/OpSys.h | 13 | ||||
-rw-r--r-- | launcher/minecraft/auth/AuthSession.cpp | 5 | ||||
-rw-r--r-- | launcher/minecraft/auth/AuthSession.h | 4 | ||||
-rw-r--r-- | launcher/minecraft/auth/Parsers.cpp | 2 | ||||
-rw-r--r-- | launcher/minecraft/launch/ClaimAccount.cpp | 2 | ||||
-rw-r--r-- | launcher/minecraft/launch/ExtractNatives.cpp | 7 | ||||
-rw-r--r-- | launcher/minecraft/launch/PrintInstanceInfo.cpp | 45 | ||||
-rw-r--r-- | launcher/minecraft/launch/VerifyJavaInstall.cpp | 7 | ||||
-rw-r--r-- | launcher/minecraft/update/AssetUpdateTask.cpp | 9 | ||||
-rw-r--r-- | launcher/minecraft/update/FMLLibrariesTask.cpp | 4 | ||||
-rw-r--r-- | launcher/minecraft/update/LibrariesTask.cpp | 4 |
14 files changed, 100 insertions, 20 deletions
diff --git a/launcher/minecraft/AssetsUtils.cpp b/launcher/minecraft/AssetsUtils.cpp index 1c65a212..7290aeb4 100644 --- a/launcher/minecraft/AssetsUtils.cpp +++ b/launcher/minecraft/AssetsUtils.cpp @@ -29,6 +29,8 @@ #include "net/ChecksumValidator.h" #include "BuildConfig.h" +#include "Application.h" + namespace { QSet<QString> collectPathsFromDir(QString dirPath) { @@ -318,7 +320,7 @@ QString AssetObject::getRelPath() NetJob::Ptr AssetsIndex::getDownloadJob() { - auto job = new NetJob(QObject::tr("Assets for %1").arg(id)); + auto job = new NetJob(QObject::tr("Assets for %1").arg(id), APPLICATION->network()); for (auto &object : objects.values()) { auto dl = object.getDownloadAction(); diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 2526e620..0b3c049b 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -431,8 +431,7 @@ QStringList MinecraftInstance::processMinecraftArgs( QMap<QString, QString> token_mapping; // yggdrasil! - if(session) - { + if(session) { // token_mapping["auth_username"] = session->username; token_mapping["auth_session"] = session->session; token_mapping["auth_access_token"] = session->access_token; @@ -440,6 +439,9 @@ QStringList MinecraftInstance::processMinecraftArgs( token_mapping["auth_uuid"] = session->uuid; token_mapping["user_properties"] = session->serializeUserProperties(); token_mapping["user_type"] = session->user_type; + if(session->demo) { + args_pattern += " --demo"; + } } // blatant self-promotion. @@ -872,7 +874,9 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt // if we aren't in offline mode,. if(session->status != AuthSession::PlayableOffline) { - process->appendStep(new ClaimAccount(pptr, session)); + if(!session->demo) { + process->appendStep(new ClaimAccount(pptr, session)); + } process->appendStep(new Update(pptr, Net::Mode::Online)); } else diff --git a/launcher/minecraft/OpSys.cpp b/launcher/minecraft/OpSys.cpp index f6a4ed1c..093ec419 100644 --- a/launcher/minecraft/OpSys.cpp +++ b/launcher/minecraft/OpSys.cpp @@ -17,6 +17,8 @@ OpSys OpSys_fromString(QString name) { + if (name == "freebsd") + return Os_FreeBSD; if (name == "linux") return Os_Linux; if (name == "windows") @@ -30,6 +32,8 @@ QString OpSys_toString(OpSys name) { switch (name) { + case Os_FreeBSD: + return "freebsd"; case Os_Linux: return "linux"; case Os_OSX: diff --git a/launcher/minecraft/OpSys.h b/launcher/minecraft/OpSys.h index 63c750b1..0936f817 100644 --- a/launcher/minecraft/OpSys.h +++ b/launcher/minecraft/OpSys.h @@ -18,6 +18,7 @@ enum OpSys { Os_Windows, + Os_FreeBSD, Os_Linux, Os_OSX, Os_Other @@ -27,11 +28,11 @@ OpSys OpSys_fromString(QString); QString OpSys_toString(OpSys); #ifdef Q_OS_WIN32 -#define currentSystem Os_Windows + #define currentSystem Os_Windows +#elif defined Q_OS_MAC + #define currentSystem Os_OSX +#elif defined Q_OS_FREEBSD + #define currentSystem Os_FreeBSD #else -#ifdef Q_OS_MAC -#define currentSystem Os_OSX -#else -#define currentSystem Os_Linux + #define currentSystem Os_Linux #endif -#endif
\ No newline at end of file diff --git a/launcher/minecraft/auth/AuthSession.cpp b/launcher/minecraft/auth/AuthSession.cpp index d44f9098..6bea74a3 100644 --- a/launcher/minecraft/auth/AuthSession.cpp +++ b/launcher/minecraft/auth/AuthSession.cpp @@ -30,3 +30,8 @@ bool AuthSession::MakeOffline(QString offline_playername) status = PlayableOffline; return true; } + +void AuthSession::MakeDemo() { + player_name = "Player"; + demo = true; +} diff --git a/launcher/minecraft/auth/AuthSession.h b/launcher/minecraft/auth/AuthSession.h index 55fbdf39..a75df506 100644 --- a/launcher/minecraft/auth/AuthSession.h +++ b/launcher/minecraft/auth/AuthSession.h @@ -11,6 +11,7 @@ class QNetworkAccessManager; struct AuthSession { bool MakeOffline(QString offline_playername); + void MakeDemo(); QString serializeUserProperties(); @@ -43,6 +44,9 @@ struct AuthSession bool auth_server_online = false; // Did the user request online mode? bool wants_online = true; + + //Is this a demo session? + bool demo = false; }; typedef std::shared_ptr<AuthSession> AuthSessionPtr; diff --git a/launcher/minecraft/auth/Parsers.cpp b/launcher/minecraft/auth/Parsers.cpp index 4cab78ef..ed31e934 100644 --- a/launcher/minecraft/auth/Parsers.cpp +++ b/launcher/minecraft/auth/Parsers.cpp @@ -226,6 +226,8 @@ bool parseMinecraftEntitlements(QByteArray & data, MinecraftEntitlement &output) } auto obj = doc.object(); + output.canPlayMinecraft = false; + output.ownsMinecraft = false; auto itemsArray = obj.value("items").toArray(); for(auto item: itemsArray) { diff --git a/launcher/minecraft/launch/ClaimAccount.cpp b/launcher/minecraft/launch/ClaimAccount.cpp index bb4f6806..1cd7c0da 100644 --- a/launcher/minecraft/launch/ClaimAccount.cpp +++ b/launcher/minecraft/launch/ClaimAccount.cpp @@ -6,7 +6,7 @@ ClaimAccount::ClaimAccount(LaunchTask* parent, AuthSessionPtr session): LaunchStep(parent) { - if(session->status == AuthSession::Status::PlayableOnline) + if(session->status == AuthSession::Status::PlayableOnline && !session->demo) { auto accounts = APPLICATION->accounts(); m_account = accounts->getAccountByProfileName(session->player_name); diff --git a/launcher/minecraft/launch/ExtractNatives.cpp b/launcher/minecraft/launch/ExtractNatives.cpp index d57499aa..8cd439b1 100644 --- a/launcher/minecraft/launch/ExtractNatives.cpp +++ b/launcher/minecraft/launch/ExtractNatives.cpp @@ -23,6 +23,13 @@ #include "FileSystem.h" #include <QDir> +#ifdef major + #undef major +#endif +#ifdef minor + #undef minor +#endif + static QString replaceSuffix (QString target, const QString &suffix, const QString &replacement) { if (!target.endsWith(suffix)) diff --git a/launcher/minecraft/launch/PrintInstanceInfo.cpp b/launcher/minecraft/launch/PrintInstanceInfo.cpp index 3da17902..e8fbcb9b 100644 --- a/launcher/minecraft/launch/PrintInstanceInfo.cpp +++ b/launcher/minecraft/launch/PrintInstanceInfo.cpp @@ -19,8 +19,9 @@ #include "PrintInstanceInfo.h" #include <launch/LaunchTask.h> -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) namespace { +#if defined(Q_OS_LINUX) void probeProcCpuinfo(QStringList &log) { std::ifstream cpuin("/proc/cpuinfo"); @@ -66,7 +67,43 @@ void runLspci(QStringList &log) } pclose(lspci); } +#elif defined(Q_OS_FREEBSD) +void runSysctlHwModel(QStringList &log) +{ + char buff[512]; + FILE *hwmodel = popen("sysctl hw.model", "r"); + while (fgets(buff, 512, hwmodel) != NULL) + { + log << QString::fromUtf8(buff); + break; + } + pclose(hwmodel); +} +void runPciconf(QStringList &log) +{ + char buff[512]; + std::string strcard; + FILE *pciconf = popen("pciconf -lv -a vgapci0", "r"); + while (fgets(buff, 512, pciconf) != NULL) + { + if (strncmp(buff, " vendor", 10) == 0) + { + std::string str(buff); + strcard.append(str.substr(str.find_first_of("'") + 1, str.find_last_not_of("'") - (str.find_first_of("'") + 2))); + strcard.append(" "); + } + else if (strncmp(buff, " device", 10) == 0) + { + std::string str2(buff); + strcard.append(str2.substr(str2.find_first_of("'") + 1, str2.find_last_not_of("'") - (str2.find_first_of("'") + 2))); + } + log << QString::fromStdString(strcard); + break; + } + pclose(pciconf); +} +#endif void runGlxinfo(QStringList & log) { // FIXME: fixed size buffers... @@ -94,10 +131,14 @@ void PrintInstanceInfo::executeTask() auto instance = m_parent->instance(); QStringList log; -#ifdef Q_OS_LINUX +#if defined(Q_OS_LINUX) ::probeProcCpuinfo(log); ::runLspci(log); ::runGlxinfo(log); +#elif defined(Q_OS_FREEBSD) + ::runSysctlHwModel(log); + ::runPciconf(log); + ::runGlxinfo(log); #endif logLines(log, MessageLevel::Launcher); diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index d9f7ecdc..15acf678 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -5,6 +5,13 @@ #include <minecraft/PackProfile.h> #include <minecraft/VersionFilterData.h> +#ifdef major + #undef major +#endif +#ifdef minor + #undef minor +#endif + void VerifyJavaInstall::executeTask() { auto m_inst = std::dynamic_pointer_cast<MinecraftInstance>(m_parent->instance()); diff --git a/launcher/minecraft/update/AssetUpdateTask.cpp b/launcher/minecraft/update/AssetUpdateTask.cpp index 096e1719..c4bddb08 100644 --- a/launcher/minecraft/update/AssetUpdateTask.cpp +++ b/launcher/minecraft/update/AssetUpdateTask.cpp @@ -24,7 +24,10 @@ void AssetUpdateTask::executeTask() auto assets = profile->getMinecraftAssets(); QUrl indexUrl = assets->url; QString localPath = assets->id + ".json"; - auto job = new NetJob(tr("Asset index for %1").arg(m_inst->name())); + auto job = new NetJob( + tr("Asset index for %1").arg(m_inst->name()), + APPLICATION->network() + ); auto metacache = APPLICATION->metacache(); auto entry = metacache->resolveEntry("asset_indexes", localPath); @@ -43,7 +46,7 @@ void AssetUpdateTask::executeTask() connect(downloadJob.get(), &NetJob::progress, this, &AssetUpdateTask::progress); qDebug() << m_inst->name() << ": Starting asset index download"; - downloadJob->start(APPLICATION->network()); + downloadJob->start(); } bool AssetUpdateTask::canAbort() const @@ -78,7 +81,7 @@ void AssetUpdateTask::assetIndexFinished() connect(downloadJob.get(), &NetJob::succeeded, this, &AssetUpdateTask::emitSucceeded); connect(downloadJob.get(), &NetJob::failed, this, &AssetUpdateTask::assetsFailed); connect(downloadJob.get(), &NetJob::progress, this, &AssetUpdateTask::progress); - downloadJob->start(APPLICATION->network()); + downloadJob->start(); return; } emitSucceeded(); diff --git a/launcher/minecraft/update/FMLLibrariesTask.cpp b/launcher/minecraft/update/FMLLibrariesTask.cpp index a5c6b1e3..58141991 100644 --- a/launcher/minecraft/update/FMLLibrariesTask.cpp +++ b/launcher/minecraft/update/FMLLibrariesTask.cpp @@ -61,7 +61,7 @@ void FMLLibrariesTask::executeTask() // download missing libs to our place setStatus(tr("Downloading FML libraries...")); - auto dljob = new NetJob("FML libraries"); + auto dljob = new NetJob("FML libraries", APPLICATION->network()); auto metacache = APPLICATION->metacache(); for (auto &lib : fmlLibsToProcess) { @@ -74,7 +74,7 @@ void FMLLibrariesTask::executeTask() connect(dljob, &NetJob::failed, this, &FMLLibrariesTask::fmllibsFailed); connect(dljob, &NetJob::progress, this, &FMLLibrariesTask::progress); downloadJob.reset(dljob); - downloadJob->start(APPLICATION->network()); + downloadJob->start(); } bool FMLLibrariesTask::canAbort() const diff --git a/launcher/minecraft/update/LibrariesTask.cpp b/launcher/minecraft/update/LibrariesTask.cpp index 065b4e06..667dd5d9 100644 --- a/launcher/minecraft/update/LibrariesTask.cpp +++ b/launcher/minecraft/update/LibrariesTask.cpp @@ -20,7 +20,7 @@ void LibrariesTask::executeTask() auto components = inst->getPackProfile(); auto profile = components->getProfile(); - auto job = new NetJob(tr("Libraries for instance %1").arg(inst->name())); + auto job = new NetJob(tr("Libraries for instance %1").arg(inst->name()), APPLICATION->network()); downloadJob.reset(job); auto metacache = APPLICATION->metacache(); @@ -65,7 +65,7 @@ void LibrariesTask::executeTask() connect(downloadJob.get(), &NetJob::succeeded, this, &LibrariesTask::emitSucceeded); connect(downloadJob.get(), &NetJob::failed, this, &LibrariesTask::jarlibFailed); connect(downloadJob.get(), &NetJob::progress, this, &LibrariesTask::progress); - downloadJob->start(APPLICATION->network()); + downloadJob->start(); } bool LibrariesTask::canAbort() const |