summaryrefslogtreecommitdiffstats
path: root/logic/minecraft/MinecraftVersion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logic/minecraft/MinecraftVersion.cpp')
-rw-r--r--logic/minecraft/MinecraftVersion.cpp60
1 files changed, 48 insertions, 12 deletions
diff --git a/logic/minecraft/MinecraftVersion.cpp b/logic/minecraft/MinecraftVersion.cpp
index 2191e8af..e0cbce8d 100644
--- a/logic/minecraft/MinecraftVersion.cpp
+++ b/logic/minecraft/MinecraftVersion.cpp
@@ -1,29 +1,26 @@
#include "MinecraftVersion.h"
#include "VersionFinal.h"
+#include "VersionBuildError.h"
+#include "VersionBuilder.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 (is_latest && is_snapshot)
- {
- return QObject::tr("Latest snapshot");
- }
- else if (is_latest)
- {
- return QObject::tr("Latest release");
- }
- else if (is_snapshot)
+ if (is_snapshot)
{
return QObject::tr("Snapshot");
}
@@ -32,22 +29,41 @@ QString MinecraftVersion::typeString() const
return QObject::tr("Regular release");
}
}
+
bool MinecraftVersion::hasJarMods()
{
return false;
}
-bool MinecraftVersion::isVanilla()
+
+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(VersionFinal *version)
+{
+ QFileInfo versionFile(QString("versions/%1/%1.json").arg(m_descriptor));
+
+ auto versionObj = VersionBuilder::parseJsonFile(versionFile, false, false);
+ versionObj->applyTo(version);
+}
+
void MinecraftVersion::applyTo(VersionFinal *version)
{
- // FIXME: make this work.
- if(m_versionSource != Builtin)
+ // 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;
@@ -81,15 +97,35 @@ void MinecraftVersion::applyTo(VersionFinal *version)
}
version->traits.unite(m_traits);
}
+
int MinecraftVersion::getOrder()
{
return order;
}
+
void MinecraftVersion::setOrder(int order)
{
this->order = order;
}
+
QList<JarmodPtr> MinecraftVersion::getJarMods()
{
return QList<JarmodPtr>();
}
+
+QString MinecraftVersion::getPatchName()
+{
+ return "Minecraft";
+}
+QString MinecraftVersion::getPatchVersion()
+{
+ return m_descriptor;
+}
+QString MinecraftVersion::getPatchID()
+{
+ return "net.minecraft";
+}
+QString MinecraftVersion::getPatchFilename()
+{
+ return QString();
+}