From 43fce3ae46ce94e0524e857f4805337bb000df1a Mon Sep 17 00:00:00 2001 From: Dylan Schooner Date: Thu, 18 Dec 2025 12:34:41 -0500 Subject: [PATCH] Trim unexpected info from pack.mcmeta Signed-off-by: Dylan Schooner --- .../mod/tasks/LocalDataPackParseTask.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp index 9b4bb4a50..97e441032 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp @@ -168,10 +168,20 @@ bool processZIP(DataPack* pack, ProcessingLevel level) // https://minecraft.wiki/w/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta bool processMCMeta(DataPack* pack, QByteArray&& raw_data) { - try { - auto json_doc = QJsonDocument::fromJson(raw_data); - auto pack_obj = Json::requireObject(json_doc.object(), "pack", {}); + QJsonParseError parse_error; + auto json_doc = QJsonDocument::fromJson(raw_data, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + QByteArray validJson = raw_data.left(parse_error.offset); + json_doc = QJsonDocument::fromJson(validJson, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Failed to parse JSON:" << parse_error.errorString(); + return false; + } + } + + try { + auto pack_obj = Json::requireObject(json_doc.object(), "pack", {}); pack->setPackFormat(pack_obj["pack_format"].toInt()); pack->setDescription(DataPackUtils::processComponent(pack_obj.value("description"))); } catch (Json::JsonException& e) {