summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/VersionFile.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-03-27 03:34:39 +0200
committerPetr Mrázek <peterix@gmail.com>2017-04-07 00:20:02 +0200
commit5fabb4f2546fa6b79a4e2c29679f506e587a0070 (patch)
treefabccd987452ce98a6b80cad96a5d19c2d24be46 /api/logic/minecraft/VersionFile.cpp
parent6f2a87167a13101d80d2fbc096bbb6a5eb5ab0c9 (diff)
downloadMultiMC-5fabb4f2546fa6b79a4e2c29679f506e587a0070.tar
MultiMC-5fabb4f2546fa6b79a4e2c29679f506e587a0070.tar.gz
MultiMC-5fabb4f2546fa6b79a4e2c29679f506e587a0070.tar.lz
MultiMC-5fabb4f2546fa6b79a4e2c29679f506e587a0070.tar.xz
MultiMC-5fabb4f2546fa6b79a4e2c29679f506e587a0070.zip
NOISSUE Rough refactor of ProfilePatch and VersionFile internals.
They are now distinct classes with distinct responsibilities. * ProfilePatch is an entry in MinecraftProfile and can hold VersionFile or Meta::Version. * VersionFile is the basic element that holds version information loaded from JSON. * Meta::Version is the loader class for VersionFile(s) from a server.
Diffstat (limited to 'api/logic/minecraft/VersionFile.cpp')
-rw-r--r--api/logic/minecraft/VersionFile.cpp35
1 files changed, 21 insertions, 14 deletions
diff --git a/api/logic/minecraft/VersionFile.cpp b/api/logic/minecraft/VersionFile.cpp
index 17dc6a49..b261ff2a 100644
--- a/api/logic/minecraft/VersionFile.cpp
+++ b/api/logic/minecraft/VersionFile.cpp
@@ -12,32 +12,28 @@
#include "VersionBuildError.h"
#include <Version.h>
-bool VersionFile::isMinecraftVersion()
+static bool isMinecraftVersion(const QString &uid)
{
return uid == "net.minecraft";
}
void VersionFile::applyTo(MinecraftProfile *profile)
{
- auto theirVersion = profile->getMinecraftVersion();
- if (!theirVersion.isNull() && !dependsOnMinecraftVersion.isNull())
+ // Only real Minecraft can set those. Don't let anything override them.
+ if (isMinecraftVersion(uid))
{
- if (QRegExp(dependsOnMinecraftVersion, Qt::CaseInsensitive, QRegExp::Wildcard).indexIn(theirVersion) == -1)
- {
- throw MinecraftVersionMismatch(uid, dependsOnMinecraftVersion, theirVersion);
- }
+ profile->applyMinecraftVersion(minecraftVersion);
+ profile->applyMinecraftVersionType(type);
+ // HACK: ignore assets from other version files than Minecraft
+ // workaround for stupid assets issue caused by amazon:
+ // https://www.theregister.co.uk/2017/02/28/aws_is_awol_as_s3_goes_haywire/
+ profile->applyMinecraftAssets(mojangAssetIndex);
}
- profile->applyMinecraftVersion(minecraftVersion);
+
profile->applyMainClass(mainClass);
profile->applyAppletClass(appletClass);
profile->applyMinecraftArguments(minecraftArguments);
- if (isMinecraftVersion())
- {
- profile->applyMinecraftVersionType(type);
- }
- profile->applyMinecraftAssets(mojangAssetIndex);
profile->applyTweakers(addTweakers);
-
profile->applyJarMods(jarMods);
profile->applyTraits(traits);
@@ -53,3 +49,14 @@ void VersionFile::applyTo(MinecraftProfile *profile)
iter++;
}
}
+
+/*
+ auto theirVersion = profile->getMinecraftVersion();
+ if (!theirVersion.isNull() && !dependsOnMinecraftVersion.isNull())
+ {
+ if (QRegExp(dependsOnMinecraftVersion, Qt::CaseInsensitive, QRegExp::Wildcard).indexIn(theirVersion) == -1)
+ {
+ throw MinecraftVersionMismatch(uid, dependsOnMinecraftVersion, theirVersion);
+ }
+ }
+*/ \ No newline at end of file