MCPcopy Create free account
hub / github.com/MultiMC/Launcher / ReadQuiltModInfo

Function ReadQuiltModInfo

launcher/minecraft/mod/LocalModParseTask.cpp:266–308  ·  view source on GitHub ↗

https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md

Source from the content-addressed store, hash-verified

264
265// https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md
266std::shared_ptr<ModDetails> ReadQuiltModInfo(QByteArray contents)
267{
268 QJsonParseError jsonError;
269 QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
270 auto object = jsonDoc.object();
271
272 std::shared_ptr<ModDetails> details = std::make_shared<ModDetails>();
273
274 if (object.contains("schema_version") && object.value("schema_version").toInt() == 1)
275 {
276 QJsonObject loader = object.value("quilt_loader").toObject();
277 details->mod_id = loader.value("id").toString();
278 details->version = loader.value("version").toString();
279
280 if (loader.contains("metadata"))
281 {
282 QJsonObject metadata = loader.value("metadata").toObject();
283 details->name = metadata.contains("name") ? metadata.value("name").toString() : details->mod_id;
284
285 if (metadata.contains("description"))
286 {
287 details->description = metadata.value("description").toString();
288 }
289
290 if (metadata.contains("contributors"))
291 {
292 // NOTE: This lists every contributor, not just "authors"
293 details->authors = metadata.value("contributors").toObject().keys();
294 }
295
296 if (object.contains("contact"))
297 {
298 QJsonObject contact = object.value("contact").toObject();
299
300 if (contact.contains("homepage"))
301 {
302 details->homeurl = contact.value("homepage").toString();
303 }
304 }
305 }
306 }
307 return details;
308}
309
310std::shared_ptr<ModDetails> ReadForgeInfo(QByteArray contents)
311{

Callers 1

processAsZipMethod · 0.85

Calls 4

fromJsonFunction · 0.85
objectMethod · 0.80
containsMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected