mirror of
https://github.com/UltimMC/Launcher.git
synced 2025-12-24 12:32:42 +00:00
Fix launch offline
This commit is contained in:
@@ -886,12 +886,16 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt
|
||||
if(session->status != AuthSession::PlayableOffline)
|
||||
{
|
||||
process->appendStep(new ClaimAccount(pptr, session));
|
||||
}
|
||||
|
||||
// do update only if we're in online mode
|
||||
if (session->wants_online)
|
||||
{
|
||||
process->appendStep(new Update(pptr, Net::Mode::Online));
|
||||
}
|
||||
else
|
||||
{
|
||||
process->appendStep(new Update(pptr, Net::Mode::Online));
|
||||
// TODO: Separate "cracked" logins (offline from auth servers) from genuine offline logins (no internet)
|
||||
process->appendStep(new Update(pptr, Net::Mode::Offline));
|
||||
}
|
||||
|
||||
// if there are any jar mods
|
||||
@@ -924,6 +928,7 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt
|
||||
{
|
||||
auto step = new InjectAuthlib(pptr, &m_injector);
|
||||
step->setAuthServer(session->m_accountPtr->provider()->injectorEndpoint().arg(localAuthServerPort));
|
||||
step->setOfflineMode(!session->wants_online);
|
||||
process->appendStep(step);
|
||||
}
|
||||
|
||||
@@ -1050,5 +1055,4 @@ QList< Mod > MinecraftInstance::getJarMods() const
|
||||
return mods;
|
||||
}
|
||||
|
||||
|
||||
#include "MinecraftInstance.moc"
|
||||
|
||||
@@ -37,14 +37,21 @@ void InjectAuthlib::executeTask()
|
||||
auto latestVersionInfo = QString("https://authlib-injector.yushi.moe/artifact/latest.json");
|
||||
auto netJob = new NetJob("Injector versions info download");
|
||||
MetaEntryPtr entry = ENV.metacache()->resolveEntry("injectors", "version.json");
|
||||
entry->setStale(true);
|
||||
auto task = Net::Download::makeCached(QUrl(latestVersionInfo), entry);
|
||||
netJob->addNetAction(task);
|
||||
if (!m_offlineMode)
|
||||
{
|
||||
entry->setStale(true);
|
||||
auto task = Net::Download::makeCached(QUrl(latestVersionInfo), entry);
|
||||
netJob->addNetAction(task);
|
||||
|
||||
jobPtr.reset(netJob);
|
||||
QObject::connect(netJob, &NetJob::succeeded, this, &InjectAuthlib::onVersionDownloadSucceeded);
|
||||
QObject::connect(netJob, &NetJob::failed, this, &InjectAuthlib::onDownloadFailed);
|
||||
jobPtr->start();
|
||||
jobPtr.reset(netJob);
|
||||
QObject::connect(netJob, &NetJob::succeeded, this, &InjectAuthlib::onVersionDownloadSucceeded);
|
||||
QObject::connect(netJob, &NetJob::failed, this, &InjectAuthlib::onDownloadFailed);
|
||||
jobPtr->start();
|
||||
}
|
||||
else
|
||||
{
|
||||
onVersionDownloadSucceeded();
|
||||
}
|
||||
}
|
||||
|
||||
void InjectAuthlib::onVersionDownloadSucceeded()
|
||||
@@ -102,17 +109,23 @@ void InjectAuthlib::onVersionDownloadSucceeded()
|
||||
m_versionName = fi.fileName();
|
||||
|
||||
qDebug() << "Authlib injector version:" << m_versionName;
|
||||
if (!m_offlineMode)
|
||||
{
|
||||
auto netJob = new NetJob("Injector download");
|
||||
MetaEntryPtr entry = ENV.metacache()->resolveEntry("injectors", m_versionName);
|
||||
entry->setStale(true);
|
||||
auto task = Net::Download::makeCached(QUrl(downloadUrl), entry);
|
||||
netJob->addNetAction(task);
|
||||
|
||||
auto netJob = new NetJob("Injector download");
|
||||
MetaEntryPtr entry = ENV.metacache()->resolveEntry("injectors", m_versionName);
|
||||
entry->setStale(true);
|
||||
auto task = Net::Download::makeCached(QUrl(downloadUrl), entry);
|
||||
netJob->addNetAction(task);
|
||||
|
||||
jobPtr.reset(netJob);
|
||||
QObject::connect(netJob, &NetJob::succeeded, this, &InjectAuthlib::onDownloadSucceeded);
|
||||
QObject::connect(netJob, &NetJob::failed, this, &InjectAuthlib::onDownloadFailed);
|
||||
jobPtr->start();
|
||||
jobPtr.reset(netJob);
|
||||
QObject::connect(netJob, &NetJob::succeeded, this, &InjectAuthlib::onDownloadSucceeded);
|
||||
QObject::connect(netJob, &NetJob::failed, this, &InjectAuthlib::onDownloadFailed);
|
||||
jobPtr->start();
|
||||
}
|
||||
else
|
||||
{
|
||||
onDownloadSucceeded();
|
||||
}
|
||||
}
|
||||
|
||||
void InjectAuthlib::onDownloadSucceeded()
|
||||
|
||||
@@ -52,6 +52,10 @@ public:
|
||||
m_authServer = server;
|
||||
};
|
||||
|
||||
void setOfflineMode(bool offline) {
|
||||
m_offlineMode = offline;
|
||||
}
|
||||
|
||||
public slots:
|
||||
bool abort() override;
|
||||
|
||||
@@ -64,6 +68,7 @@ private:
|
||||
shared_qobject_ptr<Task> jobPtr;
|
||||
bool m_aborted = false;
|
||||
|
||||
bool m_offlineMode;
|
||||
QString m_versionName;
|
||||
QString m_authServer;
|
||||
AuthlibInjectorPtr *m_injector;
|
||||
|
||||
Reference in New Issue
Block a user