aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft/mod/tasks
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-08-29 09:15:06 -0300
committerflow <flowlnlnln@gmail.com>2022-09-03 13:37:22 -0300
commit9b984cedaca78153bc865a3eac5def4535b4d664 (patch)
treec6b17be06cd46656fa350793bf499a0908930dc0 /launcher/minecraft/mod/tasks
parentdd9e30b24ab20c6e559618f435b141383e0d0fcd (diff)
downloadPrismLauncher-9b984cedaca78153bc865a3eac5def4535b4d664.tar.gz
PrismLauncher-9b984cedaca78153bc865a3eac5def4535b4d664.tar.bz2
PrismLauncher-9b984cedaca78153bc865a3eac5def4535b4d664.zip
feat: add image from pack.png to resource packs
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/minecraft/mod/tasks')
-rw-r--r--launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp44
-rw-r--r--launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h1
2 files changed, 42 insertions, 3 deletions
diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp
index 0fc7a87e..b13e5775 100644
--- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp
+++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp
@@ -54,6 +54,16 @@ void LocalResourcePackParseTask::processMCMeta(QByteArray&& raw_data)
}
}
+void LocalResourcePackParseTask::processPackPNG(QByteArray&& raw_data)
+{
+ auto img = QImage::fromData(raw_data);
+ if (!img.isNull()) {
+ m_resource_pack.setImage(img);
+ } else {
+ qWarning() << "Failed to parse pack.png.";
+ }
+}
+
void LocalResourcePackParseTask::processAsFolder()
{
QFileInfo mcmeta_file_info(FS::PathCombine(m_resource_pack.fileinfo().filePath(), "pack.mcmeta"));
@@ -63,10 +73,23 @@ void LocalResourcePackParseTask::processAsFolder()
return;
auto data = mcmeta_file.readAll();
- if (data.isEmpty() || data.isNull())
- return;
processMCMeta(std::move(data));
+
+ mcmeta_file.close();
+ }
+
+ QFileInfo image_file_info(FS::PathCombine(m_resource_pack.fileinfo().filePath(), "pack.png"));
+ if (image_file_info.isFile()) {
+ QFile mcmeta_file(image_file_info.filePath());
+ if (!mcmeta_file.open(QIODevice::ReadOnly))
+ return;
+
+ auto data = mcmeta_file.readAll();
+
+ processPackPNG(std::move(data));
+
+ mcmeta_file.close();
}
}
@@ -90,6 +113,21 @@ void LocalResourcePackParseTask::processAsZip()
processMCMeta(std::move(data));
file.close();
- zip.close();
}
+
+ if (zip.setCurrentFile("pack.png")) {
+ if (!file.open(QIODevice::ReadOnly)) {
+ qCritical() << "Failed to open file in zip.";
+ zip.close();
+ return;
+ }
+
+ auto data = file.readAll();
+
+ processPackPNG(std::move(data));
+
+ file.close();
+ }
+
+ zip.close();
}
diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h
index 7660d233..86ea033d 100644
--- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h
+++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h
@@ -21,6 +21,7 @@ class LocalResourcePackParseTask : public Task {
private:
void processMCMeta(QByteArray&& raw_data);
+ void processPackPNG(QByteArray&& raw_data);
void processAsFolder();
void processAsZip();