| 557 | } |
| 558 | |
| 559 | bool 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 |
nothing calls this directly
no test coverage detected