summaryrefslogtreecommitdiffstats
path: root/logic/minecraft
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-06-08 21:26:48 +0200
committerPetr Mrázek <peterix@gmail.com>2014-06-09 01:38:31 +0200
commitbe73eb3322b6bb5ab1144f9942ef9bd188c704a1 (patch)
tree8df6bfa84a62fc17d9842d30134c6a71fd4cb3f1 /logic/minecraft
parentbf7b07050873770bd0b2ed5d73965b5a88d7a351 (diff)
downloadMultiMC-be73eb3322b6bb5ab1144f9942ef9bd188c704a1.tar
MultiMC-be73eb3322b6bb5ab1144f9942ef9bd188c704a1.tar.gz
MultiMC-be73eb3322b6bb5ab1144f9942ef9bd188c704a1.tar.lz
MultiMC-be73eb3322b6bb5ab1144f9942ef9bd188c704a1.tar.xz
MultiMC-be73eb3322b6bb5ab1144f9942ef9bd188c704a1.zip
Version revert logic improvements, colorful icons for mod lists and resource pack list.
Icons are from Oxygen.
Diffstat (limited to 'logic/minecraft')
-rw-r--r--logic/minecraft/InstanceVersion.cpp58
-rw-r--r--logic/minecraft/InstanceVersion.h8
2 files changed, 61 insertions, 5 deletions
diff --git a/logic/minecraft/InstanceVersion.cpp b/logic/minecraft/InstanceVersion.cpp
index 73beceb3..baf34404 100644
--- a/logic/minecraft/InstanceVersion.cpp
+++ b/logic/minecraft/InstanceVersion.cpp
@@ -161,12 +161,35 @@ bool InstanceVersion::isVanilla()
return false;
if(QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json")))
return false;
+ if(QFile::exists(PathCombine(m_instance->instanceRoot(), "version.json")))
+ return false;
return true;
}
bool InstanceVersion::revertToVanilla()
{
beginResetModel();
+ // remove custom.json, if present
+ QString customPath = PathCombine(m_instance->instanceRoot(), "custom.json");
+ if(QFile::exists(customPath))
+ {
+ if(!QFile::remove(customPath))
+ {
+ endResetModel();
+ return false;
+ }
+ }
+ // remove version.json, if present
+ QString versionPath = PathCombine(m_instance->instanceRoot(), "version.json");
+ if(QFile::exists(versionPath))
+ {
+ if(!QFile::remove(versionPath))
+ {
+ endResetModel();
+ return false;
+ }
+ }
+ // remove patches, if present
auto it = VersionPatches.begin();
while (it != VersionPatches.end())
{
@@ -195,9 +218,40 @@ bool InstanceVersion::revertToVanilla()
return true;
}
-bool InstanceVersion::usesLegacyCustomJson()
+bool InstanceVersion::hasDeprecatedVersionFiles()
{
- return QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json"));
+ if(QFile::exists(PathCombine(m_instance->instanceRoot(), "custom.json")))
+ return true;
+ if(QFile::exists(PathCombine(m_instance->instanceRoot(), "version.json")))
+ return true;
+ return false;
+}
+
+bool InstanceVersion::removeDeprecatedVersionFiles()
+{
+ beginResetModel();
+ // remove custom.json, if present
+ QString customPath = PathCombine(m_instance->instanceRoot(), "custom.json");
+ if(QFile::exists(customPath))
+ {
+ if(!QFile::remove(customPath))
+ {
+ endResetModel();
+ return false;
+ }
+ }
+ // remove version.json, if present
+ QString versionPath = PathCombine(m_instance->instanceRoot(), "version.json");
+ if(QFile::exists(versionPath))
+ {
+ if(!QFile::remove(versionPath))
+ {
+ endResetModel();
+ return false;
+ }
+ }
+ endResetModel();
+ return true;
}
QList<std::shared_ptr<OneSixLibrary> > InstanceVersion::getActiveNormalLibs()
diff --git a/logic/minecraft/InstanceVersion.h b/logic/minecraft/InstanceVersion.h
index 60df59df..6b69ab47 100644
--- a/logic/minecraft/InstanceVersion.h
+++ b/logic/minecraft/InstanceVersion.h
@@ -51,6 +51,11 @@ public:
// remove any customizations on top of vanilla
bool revertToVanilla();
+ // does this version consist of obsolete files?
+ bool hasDeprecatedVersionFiles();
+ // remove obsolete files
+ bool removeDeprecatedVersionFiles();
+
// does this version have an FTB pack patch file?
bool hasFtbPack();
// remove FTB pack
@@ -61,9 +66,6 @@ public:
void installJarMods(QStringList selectedFiles);
void installJarModByFilename(QString filepath);
- // does this version still use a legacy custom.json file?
- bool usesLegacyCustomJson();
-
enum MoveDirection { MoveUp, MoveDown };
void move(const int index, const MoveDirection direction);
void resetOrder();