diff options
author | Petr Mrázek <peterix@gmail.com> | 2021-10-31 21:42:06 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2021-10-31 21:43:33 +0100 |
commit | 27f276ef13f49b4d21b6c17db5d4cd5e404ea259 (patch) | |
tree | ec4f42a099b6f3df467536b0c9a9ac9e0677ab53 /launcher/LauncherMessage.cpp | |
parent | 393d17b8d383d7514b45ba980cc0246859bad085 (diff) | |
download | PrismLauncher-27f276ef13f49b4d21b6c17db5d4cd5e404ea259.tar.gz PrismLauncher-27f276ef13f49b4d21b6c17db5d4cd5e404ea259.tar.bz2 PrismLauncher-27f276ef13f49b4d21b6c17db5d4cd5e404ea259.zip |
GH-1795 add terminal launch option to use a specific Minecraft profile
Used like this:
```
./MultiMC --launch 1.17.1 --profile MultiMCTest --server mc.hypixel.net
```
Diffstat (limited to 'launcher/LauncherMessage.cpp')
-rw-r--r-- | launcher/LauncherMessage.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/launcher/LauncherMessage.cpp b/launcher/LauncherMessage.cpp new file mode 100644 index 00000000..4cc56e22 --- /dev/null +++ b/launcher/LauncherMessage.cpp @@ -0,0 +1,31 @@ +#include "LauncherMessage.h" + +#include <QJsonDocument> +#include <QJsonObject> + +void LauncherMessage::parse(const QByteArray & input) { + auto doc = QJsonDocument::fromBinaryData(input); + auto root = doc.object(); + + command = root.value("command").toString(); + args.clear(); + + auto parsedArgs = root.value("args").toObject(); + for(auto iter = parsedArgs.begin(); iter != parsedArgs.end(); iter++) { + args[iter.key()] = iter.value().toString(); + } +} + +QByteArray LauncherMessage::serialize() { + QJsonObject root; + root.insert("command", command); + QJsonObject outArgs; + for (auto iter = args.begin(); iter != args.end(); iter++) { + outArgs[iter.key()] = iter.value(); + } + root.insert("args", outArgs); + + QJsonDocument out; + out.setObject(root); + return out.toBinaryData(); +} |