summaryrefslogtreecommitdiffstats
path: root/gui/mainwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/mainwindow.cpp')
-rw-r--r--gui/mainwindow.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp
index 2efcda44..ab718f98 100644
--- a/gui/mainwindow.cpp
+++ b/gui/mainwindow.cpp
@@ -57,6 +57,7 @@
#include "logic/lists/JavaVersionList.h"
#include "logic/net/LoginTask.h"
+
#include "logic/BaseInstance.h"
#include "logic/InstanceFactory.h"
#include "logic/MinecraftProcess.h"
@@ -517,6 +518,46 @@ void MainWindow::onLoginComplete()
tDialog.exec(updateTask);
delete updateTask;
}
+
+ auto job = new DownloadJob("Player skin: " + m_activeLogin.player_name);
+
+ auto meta = MMC->metacache()->resolveEntry("skins", m_activeLogin.player_name + ".png");
+ job->addCacheDownload(QUrl("http://skins.minecraft.net/MinecraftSkins/" + m_activeLogin.player_name + ".png"), meta);
+ meta->stale = true;
+
+ job->start();
+ auto filename = MMC->metacache()->resolveEntry("skins", "skins.json")->getFullPath();
+ QFile listFile(filename);
+
+ // Add skin mapping
+ QByteArray data;
+ {
+ if(!listFile.open(QIODevice::ReadWrite))
+ {
+ QLOG_ERROR() << "Failed to open/make skins list JSON";
+ return;
+ }
+
+ data = listFile.readAll();
+ }
+
+ QJsonParseError jsonError;
+ QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError);
+ QJsonObject root = jsonDoc.object();
+ QJsonObject mappings = root.value("mappings").toObject();
+ QJsonArray usernames = mappings.value(m_activeLogin.username).toArray();
+
+ if(!usernames.contains(m_activeLogin.player_name))
+ {
+ usernames.prepend(m_activeLogin.player_name);
+ mappings[m_activeLogin.username] = usernames;
+ root["mappings"] = mappings;
+ jsonDoc.setObject(root);
+
+ // QJson hack - shouldn't have to clear the file every time a save happens
+ listFile.resize(0);
+ listFile.write(jsonDoc.toJson());
+ }
}
void MainWindow::onGameUpdateComplete()