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

Method createPackComponent

launcher/modplatform/atlauncher/ATLPackInstallTask.cpp:559–646  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

557}
558
559bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr<PackProfile> profile)
560{
561 if (m_version.mainClass.mainClass.isEmpty() && m_version.extraArguments.arguments.isEmpty()) {
562 return true;
563 }
564
565 auto mainClass = m_version.mainClass.mainClass;
566 auto extraArguments = m_version.extraArguments.arguments;
567
568 auto hasMainClassDepends = !m_version.mainClass.depends.isEmpty();
569 auto hasExtraArgumentsDepends = !m_version.extraArguments.depends.isEmpty();
570 if (hasMainClassDepends || hasExtraArgumentsDepends) {
571 QSet<QString> mods;
572 for (const auto& item : m_version.mods) {
573 mods.insert(item.name);
574 }
575
576 if (hasMainClassDepends && !mods.contains(m_version.mainClass.depends)) {
577 mainClass = "";
578 }
579
580 if (hasExtraArgumentsDepends && !mods.contains(m_version.extraArguments.depends)) {
581 extraArguments = "";
582 }
583 }
584
585 if (mainClass.isEmpty() && extraArguments.isEmpty()) {
586 return true;
587 }
588
589 auto uuid = QUuid::createUuid();
590 auto id = uuid.toString().remove('{').remove('}');
591 auto target_id = "org.multimc.atlauncher." + id;
592
593 auto patchDir = FS::PathCombine(instanceRoot, "patches");
594 if(!FS::ensureFolderPathExists(patchDir))
595 {
596 return false;
597 }
598 auto patchFileName = FS::PathCombine(patchDir, target_id + ".json");
599
600 QStringList mainClasses;
601 QStringList tweakers;
602 for(const auto & componentUid : componentsToInstall.keys()) {
603 auto componentVersion = componentsToInstall.value(componentUid);
604
605 if(componentVersion->data()->mainClass != QString("")) {
606 mainClasses.append(componentVersion->data()->mainClass);
607 }
608 tweakers.append(componentVersion->data()->addTweakers);
609 }
610
611 auto f = std::make_shared<VersionFile>();
612 f->name = m_pack_name + " " + m_version_name;
613 if (!mainClass.isEmpty() && !mainClasses.contains(mainClass)) {
614 f->mainClass = mainClass;
615 }
616

Callers

nothing calls this directly

Calls 15

PathCombineFunction · 0.85
ensureFolderPathExistsFunction · 0.85
QStringClass · 0.85
isEmptyMethod · 0.80
insertMethod · 0.80
appendMethod · 0.80
openMethod · 0.80
toJsonMethod · 0.80
appendComponentMethod · 0.80
containsMethod · 0.45
removeMethod · 0.45
toStringMethod · 0.45

Tested by

no test coverage detected