MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / run

Method run

launcher/modplatform/technic/TechnicPackProcessor.cpp:29–215  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27#include <memory>
28
29void Technic::TechnicPackProcessor::run(SettingsObjectPtr globalSettings, const QString &instName, const QString &instIcon, const QString &stagingPath, const QString &minecraftVersion, const bool isSolder)
30{
31 QString minecraftPath = FS::PathCombine(stagingPath, ".minecraft");
32 QString configPath = FS::PathCombine(stagingPath, "instance.cfg");
33 auto instanceSettings = std::make_shared<INISettingsObject>(configPath);
34 MinecraftInstance instance(globalSettings, instanceSettings, stagingPath);
35
36 instance.setName(instName);
37
38 if (instIcon != "default")
39 {
40 instance.setIconKey(instIcon);
41 }
42
43 auto components = instance.getPackProfile();
44 components->buildingFromScratch();
45
46 QByteArray data;
47
48 QString modpackJar = FS::PathCombine(minecraftPath, "bin", "modpack.jar");
49 QString versionJson = FS::PathCombine(minecraftPath, "bin", "version.json");
50 QString fmlMinecraftVersion;
51 if (QFile::exists(modpackJar))
52 {
53 QuaZip zipFile(modpackJar);
54 if (!zipFile.open(QuaZip::mdUnzip))
55 {
56 emit failed(tr("Unable to open \"bin/modpack.jar\" file!"));
57 return;
58 }
59 QuaZipDir zipFileRoot(&zipFile, "/");
60 if (zipFileRoot.exists("/version.json"))
61 {
62 if (zipFileRoot.exists("/fmlversion.properties"))
63 {
64 zipFile.setCurrentFile("fmlversion.properties");
65 QuaZipFile file(&zipFile);
66 if (!file.open(QIODevice::ReadOnly))
67 {
68 emit failed(tr("Unable to open \"fmlversion.properties\"!"));
69 return;
70 }
71 QByteArray fmlVersionData = file.readAll();
72 file.close();
73 INIFile iniFile;
74 iniFile.loadFile(fmlVersionData);
75 // If not present, this evaluates to a null string
76 fmlMinecraftVersion = iniFile["fmlbuild.mcversion"].toString();
77 }
78 zipFile.setCurrentFile("version.json", QuaZip::csSensitive);
79 QuaZipFile file(&zipFile);
80 if (!file.open(QIODevice::ReadOnly))
81 {
82 emit failed(tr("Unable to open \"version.json\"!"));
83 return;
84 }
85 data = file.readAll();
86 file.close();

Callers 2

extractFinishedMethod · 0.45
extractFinishedMethod · 0.45

Calls 15

PathCombineFunction · 0.85
requireDocumentFunction · 0.85
requireObjectFunction · 0.85
QStringClass · 0.85
setIconKeyMethod · 0.80
getPackProfileMethod · 0.80
buildingFromScratchMethod · 0.80
openMethod · 0.80
existsMethod · 0.80
loadFileMethod · 0.80
isEmptyMethod · 0.80
setComponentVersionMethod · 0.80

Tested by

no test coverage detected