Merge pull request #2690 from asiekierka/fabric-modparse
Add Fabric mod JSON parsing support
This commit is contained in:
commit
83c48a0f1a
@ -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,48 @@ 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();
|
||||||
|
m_authors = "";
|
||||||
|
|
||||||
|
for (int i = 0; i < authors.size(); i++)
|
||||||
|
{
|
||||||
|
QString author_name = authors.at(i).isObject()
|
||||||
|
? authors.at(i).toObject().value("name").toString()
|
||||||
|
: authors.at(i).toString();
|
||||||
|
|
||||||
|
if (i > 0)
|
||||||
|
m_authors += ", " + author_name;
|
||||||
|
else {
|
||||||
|
m_authors += author_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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