#include "MinecraftVersion.h" #include "InstanceVersion.h" #include "VersionBuildError.h" #include "VersionBuilder.h" #include "MultiMC.h" #include "logic/settings/SettingsObject.h" bool MinecraftVersion::usesLegacyLauncher() { return m_traits.contains("legacyLaunch") || m_traits.contains("aplhaLaunch"); } QString MinecraftVersion::descriptor() { return m_descriptor; } QString MinecraftVersion::name() { return m_name; } QString MinecraftVersion::typeString() const { if(m_type == "snapshot") { return QObject::tr("Snapshot"); } else if (m_type == "release") { return QObject::tr("Regular release"); } else if (m_type == "old_alpha") { return QObject::tr("Alpha"); } else if (m_type == "old_beta") { return QObject::tr("Beta"); } else { return QString(); } } bool MinecraftVersion::hasJarMods() { return false; } bool MinecraftVersion::isMinecraftVersion() { return true; } // 1. assume the local file is good. load, check. If it's good, apply. // 2. if discrepancies are found, fall out and fail (impossible to apply incomplete version). void MinecraftVersion::applyFileTo(InstanceVersion *version) { QFileInfo versionFile(QString("versions/%1/%1.dat").arg(m_descriptor)); auto versionObj = VersionBuilder::parseBinaryJsonFile(versionFile); versionObj->applyTo(version); } void MinecraftVersion::applyTo(InstanceVersion *version) { // do we have this one cached? if (m_versionSource == Local) { applyFileTo(version); return; } // if not builtin, do not proceed any further. if (m_versionSource != Builtin) { throw VersionIncomplete(QObject::tr( "Minecraft version %1 could not be applied: version files are missing.").arg(m_descriptor)); } if (!m_descriptor.isNull()) { version->id = m_descriptor; } if (!m_mainClass.isNull()) { version->mainClass = m_mainClass; } if (!m_appletClass.isNull()) { version->appletClass = m_appletClass; } if (!m_processArguments.isNull()) { version->vanillaProcessArguments = m_processArguments; version->processArguments = m_processArguments; } if (!m_type.isNull()) { version->type = m_type; } if (!m_releaseTimeString.isNull()) { version->m_releaseTimeString = m_releaseTimeString; version->m_releaseTime = m_releaseTime; } if (!m_updateTimeString.isNull()) { version->m_updateTimeString = m_updateTimeString; version->m_updateTime = m_updateTime; } version->traits.unite(m_traits); } int MinecraftVersion::getOrder() { return order; } void MinecraftVersion::setOrder(int order) { this->order = order; } QList MinecraftVersion::getJarMods() { return QList(); } QString MinecraftVersion::getPatchName() { return "Minecraft"; } QString MinecraftVersion::getPatchVersion() { return m_descriptor; } QString MinecraftVersion::getPatchID() { return "net.minecraft"; } QString MinecraftVersion::getPatchFilename() { return QString(); } bool MinecraftVersion::needsUpdate() { auto settings = MMC->settings(); bool result = m_versionSource == Remote || (hasUpdate() && settings->get("AutoUpdateMinecraftVersions").toBool()); return result; } bool MinecraftVersion::hasUpdate() { return m_versionSource == Remote || (m_versionSource == Local && upstreamUpdate); } bool MinecraftVersion::isCustom() { // if we add any other source types, this will evaluate to false for them. return m_versionSource != Builtin && m_versionSource != Local && m_versionSource != Remote; }