diff options
Diffstat (limited to 'logic/forge')
-rw-r--r-- | logic/forge/ForgeInstaller.cpp | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/logic/forge/ForgeInstaller.cpp b/logic/forge/ForgeInstaller.cpp index 53370446..91af32af 100644 --- a/logic/forge/ForgeInstaller.cpp +++ b/logic/forge/ForgeInstaller.cpp @@ -38,6 +38,7 @@ ForgeInstaller::ForgeInstaller() : BaseInstaller() { } + void ForgeInstaller::prepare(const QString &filename, const QString &universalUrl) { std::shared_ptr<InstanceVersion> newVersion; @@ -117,6 +118,7 @@ void ForgeInstaller::prepare(const QString &filename, const QString &universalUr m_forge_json = newVersion; realVersionId = m_forge_json->id = installObj.value("minecraft").toString(); } + bool ForgeInstaller::add(OneSixInstance *to) { if (!BaseInstaller::add(to)) @@ -134,7 +136,7 @@ bool ForgeInstaller::add(OneSixInstance *to) QJsonArray librariesPlus; // A blacklist QSet<QString> blacklist{"authlib", "realms"}; - // + // QList<QString> xzlist{"org.scala-lang", "com.typesafe"}; // for each library in the version we are adding (except for the blacklisted) for (auto lib : m_forge_json->libraries) @@ -151,7 +153,7 @@ bool ForgeInstaller::add(OneSixInstance *to) // WARNING: This could actually break. // if this is the actual forge lib, set an absolute url for the download - if(m_forge_version->type == ForgeVersion::Gradle) + if (m_forge_version->type == ForgeVersion::Gradle) { if (libName == "forge") { @@ -159,9 +161,10 @@ bool ForgeInstaller::add(OneSixInstance *to) } else if (libName == "minecraftforge") { - QString forgeCoord ("net.minecraftforge:forge:%1:universal"); + QString forgeCoord("net.minecraftforge:forge:%1:universal"); // using insane form of the MC version... - QString longVersion = m_forge_version->mcver + "-" + m_forge_version->jobbuildver; + QString longVersion = + m_forge_version->mcver + "-" + m_forge_version->jobbuildver; GradleSpecifier spec(forgeCoord.arg(longVersion)); lib->setRawName(spec); } @@ -176,10 +179,10 @@ bool ForgeInstaller::add(OneSixInstance *to) // WARNING: This could actually break. // mark bad libraries based on the xzlist above - for(auto entry : xzlist) + for (auto entry : xzlist) { QLOG_DEBUG() << "Testing " << rawName << " : " << entry; - if(rawName.startsWith(entry)) + if (rawName.startsWith(entry)) { lib->setHint("forge-pack-xz"); break; @@ -279,7 +282,7 @@ bool ForgeInstaller::addLegacy(OneSixInstance *to) { return false; } - if (!QFile::copy(entry->getFullPath(),finalPath)) + if (!QFile::copy(entry->getFullPath(), finalPath)) { return false; } @@ -307,7 +310,7 @@ bool ForgeInstaller::addLegacy(OneSixInstance *to) } auto fullversion = to->getFullVersion(); fullversion->remove("net.minecraftforge"); - + QFile file(filename(to->instanceRoot())); if (!file.open(QFile::WriteOnly)) { @@ -358,6 +361,21 @@ protected: } }; + /* + * HACK IF the local non-stale file is too small, mark is as stale + * + * This fixes some problems with bad files acquired because of unhandled HTTP redirects + * in old versions of MultiMC. + */ + if (!entry->stale) + { + QFileInfo localFile(entry->getFullPath()); + if (localFile.size() <= 0x4000) + { + entry->stale = true; + } + } + if (entry->stale) { NetJob *fjob = new NetJob("Forge download"); |