GH-952 flesh out {version,custom}.json upgrade step
This commit is contained in:
parent
5bbe1c7132
commit
416e08f741
@ -274,7 +274,17 @@ QVariant MinecraftProfile::data(const QModelIndex &index, int role) const
|
|||||||
case 0:
|
case 0:
|
||||||
return VersionPatches.at(row)->getPatchName();
|
return VersionPatches.at(row)->getPatchName();
|
||||||
case 1:
|
case 1:
|
||||||
return VersionPatches.at(row)->getPatchVersion();
|
{
|
||||||
|
auto patch = VersionPatches.at(row);
|
||||||
|
if(patch->isCustom())
|
||||||
|
{
|
||||||
|
return QString("%1 (Custom)").arg(patch->getPatchVersion());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return patch->getPatchVersion();
|
||||||
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
@ -21,34 +21,57 @@ void OneSixProfileStrategy::upgradeDeprecatedFiles()
|
|||||||
auto customJsonPath = PathCombine(m_instance->instanceRoot(), "custom.json");
|
auto customJsonPath = PathCombine(m_instance->instanceRoot(), "custom.json");
|
||||||
auto mcJson = PathCombine(m_instance->instanceRoot(), "patches" , "net.minecraft.json");
|
auto mcJson = PathCombine(m_instance->instanceRoot(), "patches" , "net.minecraft.json");
|
||||||
|
|
||||||
|
QString sourceFile;
|
||||||
|
QString deleteFile;
|
||||||
|
|
||||||
// convert old crap.
|
// convert old crap.
|
||||||
if(QFile::exists(customJsonPath))
|
if(QFile::exists(customJsonPath))
|
||||||
{
|
{
|
||||||
if(!ensureFilePathExists(mcJson))
|
sourceFile = customJsonPath;
|
||||||
{
|
deleteFile = versionJsonPath;
|
||||||
// WHAT DO???
|
|
||||||
}
|
|
||||||
if(!QFile::rename(customJsonPath, mcJson))
|
|
||||||
{
|
|
||||||
// WHAT DO???
|
|
||||||
}
|
|
||||||
if(QFile::exists(versionJsonPath))
|
|
||||||
{
|
|
||||||
if(!QFile::remove(versionJsonPath))
|
|
||||||
{
|
|
||||||
// WHAT DO???
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if(QFile::exists(versionJsonPath))
|
else if(QFile::exists(versionJsonPath))
|
||||||
|
{
|
||||||
|
sourceFile = versionJsonPath;
|
||||||
|
}
|
||||||
|
if(!sourceFile.isEmpty() && !QFile::exists(mcJson))
|
||||||
{
|
{
|
||||||
if(!ensureFilePathExists(mcJson))
|
if(!ensureFilePathExists(mcJson))
|
||||||
{
|
{
|
||||||
// WHAT DO???
|
qWarning() << "Couldn't create patches folder for" << m_instance->name();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if(!QFile::rename(versionJsonPath, mcJson))
|
if(!deleteFile.isEmpty() && QFile::exists(deleteFile))
|
||||||
{
|
{
|
||||||
// WHAT DO???
|
if(!QFile::remove(deleteFile))
|
||||||
|
{
|
||||||
|
qWarning() << "Couldn't remove" << deleteFile << "from" << m_instance->name();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
auto file = ProfileUtils::parseJsonFile(QFileInfo(sourceFile), false);
|
||||||
|
ProfileUtils::removeLwjglFromPatch(file);
|
||||||
|
file->fileId = "net.minecraft";
|
||||||
|
file->version = file->id;
|
||||||
|
file->name = "Minecraft";
|
||||||
|
auto data = file->toJson(false).toJson();
|
||||||
|
QSaveFile newPatchFile(mcJson);
|
||||||
|
if(!newPatchFile.open(QIODevice::WriteOnly))
|
||||||
|
{
|
||||||
|
newPatchFile.cancelWriting();
|
||||||
|
qWarning() << "Couldn't open main patch for writing in" << m_instance->name();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
newPatchFile.write(data);
|
||||||
|
if(!newPatchFile.commit())
|
||||||
|
{
|
||||||
|
qWarning() << "Couldn't save main patch in" << m_instance->name();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!QFile::remove(sourceFile))
|
||||||
|
{
|
||||||
|
qWarning() << "Couldn't remove" << sourceFile << "from" << m_instance->name();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,12 +85,11 @@ void OneSixProfileStrategy::loadDefaultBuiltinPatches()
|
|||||||
if(QFile::exists(mcJson))
|
if(QFile::exists(mcJson))
|
||||||
{
|
{
|
||||||
auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false);
|
auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false);
|
||||||
file->fileId = "net.minecraft";
|
|
||||||
file->name = "Minecraft";
|
|
||||||
if(file->version.isEmpty())
|
if(file->version.isEmpty())
|
||||||
{
|
{
|
||||||
file->version = m_instance->intendedVersionId();
|
file->version = m_instance->intendedVersionId();
|
||||||
}
|
}
|
||||||
|
file->setVanilla(false);
|
||||||
minecraftPatch = std::dynamic_pointer_cast<ProfilePatch>(file);
|
minecraftPatch = std::dynamic_pointer_cast<ProfilePatch>(file);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user