summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/MinecraftVersion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'api/logic/minecraft/MinecraftVersion.cpp')
-rw-r--r--api/logic/minecraft/MinecraftVersion.cpp53
1 files changed, 34 insertions, 19 deletions
diff --git a/api/logic/minecraft/MinecraftVersion.cpp b/api/logic/minecraft/MinecraftVersion.cpp
index 1e1d273c..248c7eed 100644
--- a/api/logic/minecraft/MinecraftVersion.cpp
+++ b/api/logic/minecraft/MinecraftVersion.cpp
@@ -3,22 +3,20 @@
#include "VersionBuildError.h"
#include "ProfileUtils.h"
#include "settings/SettingsObject.h"
-#include "minecraft/VersionFilterData.h"
bool MinecraftVersion::usesLegacyLauncher()
{
- return getReleaseDateTime() < g_VersionFilterData.legacyCutoffDate;
+ return m_traits.contains("legacyLaunch") || m_traits.contains("aplhaLaunch");
}
-
QString MinecraftVersion::descriptor()
{
- return m_version;
+ return m_descriptor;
}
QString MinecraftVersion::name()
{
- return m_version;
+ return m_name;
}
QString MinecraftVersion::typeString() const
@@ -62,13 +60,13 @@ bool MinecraftVersion::isMinecraftVersion()
void MinecraftVersion::applyFileTo(MinecraftProfile *profile)
{
- if(m_versionSource == Local && getVersionFile())
+ if(m_versionSource == VersionSource::Local && getVersionFile())
{
getVersionFile()->applyTo(profile);
}
else
{
- throw VersionIncomplete(QObject::tr("Can't apply incomplete/builtin Minecraft version %1").arg(m_version));
+ throw VersionIncomplete(QObject::tr("Can't apply incomplete/builtin Minecraft version %1").arg(m_name));
}
}
@@ -77,7 +75,7 @@ QString MinecraftVersion::getUrl() const
// legacy fallback
if(m_versionFileURL.isEmpty())
{
- return QString("http://") + URLConstants::AWS_DOWNLOAD_VERSIONS + m_version + "/" + m_version + ".json";
+ return QString("http://") + URLConstants::AWS_DOWNLOAD_VERSIONS + m_descriptor + "/" + m_descriptor + ".json";
}
// current
return m_versionFileURL;
@@ -85,8 +83,9 @@ QString MinecraftVersion::getUrl() const
VersionFilePtr MinecraftVersion::getVersionFile()
{
- QFileInfo versionFile(QString("versions/%1/%1.dat").arg(m_version));
+ QFileInfo versionFile(QString("versions/%1/%1.dat").arg(m_descriptor));
m_problems.clear();
+ m_problemSeverity = PROBLEM_NONE;
if(!versionFile.exists())
{
if(m_loadedVersionFile)
@@ -121,10 +120,12 @@ bool MinecraftVersion::isCustomizable()
{
switch(m_versionSource)
{
- case Local:
- case Remote:
+ case VersionSource::Local:
+ case VersionSource::Remote:
// locally cached file, or a remote file that we can acquire can be customized
return true;
+ case VersionSource::Builtin:
+ // builtins do not follow the normal OneSix format. They are not customizable.
default:
// Everything else is undefined and therefore not customizable.
return false;
@@ -134,7 +135,7 @@ bool MinecraftVersion::isCustomizable()
const QList<PatchProblem> &MinecraftVersion::getProblems()
{
- if(getVersionFile())
+ if(m_versionSource != VersionSource::Builtin && getVersionFile())
{
return getVersionFile()->getProblems();
}
@@ -143,7 +144,7 @@ const QList<PatchProblem> &MinecraftVersion::getProblems()
ProblemSeverity MinecraftVersion::getProblemSeverity()
{
- if(getVersionFile())
+ if(m_versionSource != VersionSource::Builtin && getVersionFile())
{
return getVersionFile()->getProblemSeverity();
}
@@ -153,12 +154,24 @@ ProblemSeverity MinecraftVersion::getProblemSeverity()
void MinecraftVersion::applyTo(MinecraftProfile *profile)
{
// do we have this one cached?
- if (m_versionSource == Local)
+ if (m_versionSource == VersionSource::Local)
{
applyFileTo(profile);
return;
}
- throw VersionIncomplete(QObject::tr("Minecraft version %1 could not be applied: version files are missing.").arg(m_version));
+ // if not builtin, do not proceed any further.
+ if (m_versionSource != VersionSource::Builtin)
+ {
+ throw VersionIncomplete(QObject::tr(
+ "Minecraft version %1 could not be applied: version files are missing.").arg(m_descriptor));
+ }
+ profile->applyMinecraftVersion(m_descriptor);
+ profile->applyMainClass(m_mainClass);
+ profile->applyAppletClass(m_appletClass);
+ profile->applyMinecraftArguments(" ${auth_player_name} ${auth_session}"); // all builtin versions are legacy
+ profile->applyMinecraftVersionType(m_type);
+ profile->applyTraits(m_traits);
+ profile->applyProblemSeverity(m_problemSeverity);
}
int MinecraftVersion::getOrder()
@@ -182,7 +195,7 @@ QString MinecraftVersion::getName()
}
QString MinecraftVersion::getVersion()
{
- return m_version;
+ return m_descriptor;
}
QString MinecraftVersion::getID()
{
@@ -200,16 +213,18 @@ QDateTime MinecraftVersion::getReleaseDateTime()
bool MinecraftVersion::needsUpdate()
{
- return m_versionSource == Remote || hasUpdate();
+ return m_versionSource == VersionSource::Remote || hasUpdate();
}
bool MinecraftVersion::hasUpdate()
{
- return m_versionSource == Remote || (m_versionSource == Local && upstreamUpdate);
+ return m_versionSource == VersionSource::Remote || (m_versionSource == VersionSource::Local && upstreamUpdate);
}
bool MinecraftVersion::isCustom()
{
// if we add any other source types, this will evaluate to false for them.
- return m_versionSource != Local && m_versionSource != Remote;
+ return m_versionSource != VersionSource::Builtin
+ && m_versionSource != VersionSource::Local
+ && m_versionSource != VersionSource::Remote;
}