Add Fabric mod JSON parsing support
This commit is contained in:
parent
53ad5cb436
commit
c35dbd972e
@ -96,6 +96,19 @@ void Mod::repath(const QFileInfo &file)
|
|||||||
zip.close();
|
zip.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (zip.setCurrentFile("fabric.mod.json"))
|
||||||
|
{
|
||||||
|
if (!file.open(QIODevice::ReadOnly))
|
||||||
|
{
|
||||||
|
zip.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReadFabricModInfo(file.readAll());
|
||||||
|
file.close();
|
||||||
|
zip.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
else if (zip.setCurrentFile("forgeversion.properties"))
|
else if (zip.setCurrentFile("forgeversion.properties"))
|
||||||
{
|
{
|
||||||
if (!file.open(QIODevice::ReadOnly))
|
if (!file.open(QIODevice::ReadOnly))
|
||||||
@ -224,6 +237,45 @@ void Mod::ReadMCModInfo(QByteArray contents)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://fabricmc.net/wiki/documentation:fabric_mod_json
|
||||||
|
void Mod::ReadFabricModInfo(QByteArray contents)
|
||||||
|
{
|
||||||
|
QJsonParseError jsonError;
|
||||||
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
|
||||||
|
auto object = jsonDoc.object();
|
||||||
|
auto schemaVersion = object.contains("schemaVersion") ? object.value("schemaVersion").toInt(0) : 0;
|
||||||
|
|
||||||
|
m_mod_id = object.value("id").toString();
|
||||||
|
m_version = object.value("version").toString();
|
||||||
|
|
||||||
|
m_name = object.contains("name") ? object.value("name").toString() : m_mod_id;
|
||||||
|
m_description = object.value("description").toString();
|
||||||
|
|
||||||
|
if (schemaVersion >= 1)
|
||||||
|
{
|
||||||
|
QJsonArray authors = object.value("authors").toArray();
|
||||||
|
|
||||||
|
if (authors.size() == 0)
|
||||||
|
m_authors = "";
|
||||||
|
else if (authors.size() >= 1)
|
||||||
|
{
|
||||||
|
m_authors = authors.at(0).toObject().value("name").toString();
|
||||||
|
for (int i = 1; i < authors.size(); i++)
|
||||||
|
{
|
||||||
|
m_authors += ", " + authors.at(i).toObject().value("name").toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (object.contains("contact"))
|
||||||
|
{
|
||||||
|
QJsonObject contact = object.value("contact").toObject();
|
||||||
|
|
||||||
|
if (contact.contains("homepage"))
|
||||||
|
m_homeurl = contact.value("homepage").toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Mod::ReadForgeInfo(QByteArray contents)
|
void Mod::ReadForgeInfo(QByteArray contents)
|
||||||
{
|
{
|
||||||
// Read the data
|
// Read the data
|
||||||
|
@ -113,6 +113,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void ReadMCModInfo(QByteArray contents);
|
void ReadMCModInfo(QByteArray contents);
|
||||||
|
void ReadFabricModInfo(QByteArray contents);
|
||||||
void ReadForgeInfo(QByteArray contents);
|
void ReadForgeInfo(QByteArray contents);
|
||||||
void ReadLiteModInfo(QByteArray contents);
|
void ReadLiteModInfo(QByteArray contents);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user