custom.json overrides all. For user patching there now is instance.json

This commit is contained in:
Jan Dalheimer 2014-01-28 07:39:43 +01:00
parent 986141b503
commit 556d8f0ec1

View File

@ -695,13 +695,11 @@ bool OneSixVersionBuilder::build(const bool excludeCustom)
QDir root(m_instance->instanceRoot()); QDir root(m_instance->instanceRoot());
QDir patches(root.absoluteFilePath("patches/")); QDir patches(root.absoluteFilePath("patches/"));
// version.json -> patches/*.json -> custom.json if (QFile::exists(root.absoluteFilePath("custom.json")))
// version.json
{ {
QLOG_INFO() << "Reading version.json"; QLOG_INFO() << "Reading custom.json";
VersionFile file; VersionFile file;
if (!read(QFileInfo(root.absoluteFilePath("version.json")), false, &file)) if (!read(QFileInfo(root.absoluteFilePath("custom.json")), false, &file))
{ {
return false; return false;
} }
@ -713,52 +711,19 @@ bool OneSixVersionBuilder::build(const bool excludeCustom)
m_widgetParent, QObject::tr("Error"), m_widgetParent, QObject::tr("Error"),
QObject::tr( QObject::tr(
"Error while applying %1. Please check MultiMC-0.log for more info.") "Error while applying %1. Please check MultiMC-0.log for more info.")
.arg(root.absoluteFilePath("version.json"))); .arg(root.absoluteFilePath("custom.json")));
return false; return false;
} }
} }
else
// patches/
{ {
// load all, put into map for ordering, apply in the right order // version.json -> patches/*.json -> instance.json
QMap<int, QPair<QString, VersionFile>> files; // version.json
for (auto info : patches.entryInfoList(QStringList() << "*.json", QDir::Files))
{ {
QLOG_INFO() << "Reading" << info.fileName(); QLOG_INFO() << "Reading version.json";
VersionFile file; VersionFile file;
if (!read(info, true, &file)) if (!read(QFileInfo(root.absoluteFilePath("version.json")), false, &file))
{
return false;
}
files.insert(file.order, qMakePair(info.fileName(), file));
}
for (auto order : files.keys())
{
QLOG_DEBUG() << "Applying file with order" << order;
auto filePair = files[order];
bool isError = false;
filePair.second.applyTo(m_version, isError);
if (isError)
{
QMessageBox::critical(
m_widgetParent, QObject::tr("Error"),
QObject::tr(
"Error while applying %1. Please check MultiMC-0.log for more info.")
.arg(filePair.first));
return false;
}
}
}
// custom.json
if (!excludeCustom)
{
if (QFile::exists(root.absoluteFilePath("custom.json")))
{
QLOG_INFO() << "Reading custom.json";
VersionFile file;
if (!read(QFileInfo(root.absoluteFilePath("custom.json")), false, &file))
{ {
return false; return false;
} }
@ -767,13 +732,71 @@ bool OneSixVersionBuilder::build(const bool excludeCustom)
if (isError) if (isError)
{ {
QMessageBox::critical( QMessageBox::critical(
m_widgetParent, QObject::tr("Error"), m_widgetParent, QObject::tr("Error"),
QObject::tr( QObject::tr(
"Error while applying %1. Please check MultiMC-0.log for more info.") "Error while applying %1. Please check MultiMC-0.log for more info.")
.arg(root.absoluteFilePath("custom.json"))); .arg(root.absoluteFilePath("version.json")));
return false; return false;
} }
} }
// patches/
{
// load all, put into map for ordering, apply in the right order
QMap<int, QPair<QString, VersionFile>> files;
for (auto info : patches.entryInfoList(QStringList() << "*.json", QDir::Files))
{
QLOG_INFO() << "Reading" << info.fileName();
VersionFile file;
if (!read(info, true, &file))
{
return false;
}
files.insert(file.order, qMakePair(info.fileName(), file));
}
for (auto order : files.keys())
{
QLOG_DEBUG() << "Applying file with order" << order;
auto filePair = files[order];
bool isError = false;
filePair.second.applyTo(m_version, isError);
if (isError)
{
QMessageBox::critical(
m_widgetParent, QObject::tr("Error"),
QObject::tr(
"Error while applying %1. Please check MultiMC-0.log for more info.")
.arg(filePair.first));
return false;
}
}
}
// instance.json
if (!excludeCustom)
{
if (QFile::exists(root.absoluteFilePath("instance.json")))
{
QLOG_INFO() << "Reading instance.json";
VersionFile file;
if (!read(QFileInfo(root.absoluteFilePath("instance.json")), false, &file))
{
return false;
}
bool isError = false;
file.applyTo(m_version, isError);
if (isError)
{
QMessageBox::critical(
m_widgetParent, QObject::tr("Error"),
QObject::tr(
"Error while applying %1. Please check MultiMC-0.log for more info.")
.arg(root.absoluteFilePath("instance.json")));
return false;
}
}
}
} }
// some final touches // some final touches