MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / processMinecraftArgs

Method processMinecraftArgs

launcher/minecraft/MinecraftInstance.cpp:658–717  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

656}
657
658QStringList MinecraftInstance::processMinecraftArgs(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) const
659{
660 auto profile = m_components->getProfile();
661 QString args_pattern = profile->getMinecraftArguments();
662 for (auto tweaker : profile->getTweakers()) {
663 args_pattern += " --tweakClass " + tweaker;
664 }
665
666 if (targetToJoin) {
667 if (!targetToJoin->address.isEmpty()) {
668 if (profile->hasTrait("feature:is_quick_play_multiplayer")) {
669 args_pattern += " --quickPlayMultiplayer " + targetToJoin->address + ':' + QString::number(targetToJoin->port);
670 } else {
671 args_pattern += " --server " + targetToJoin->address;
672 args_pattern += " --port " + QString::number(targetToJoin->port);
673 }
674 } else if (!targetToJoin->world.isEmpty() && profile->hasTrait("feature:is_quick_play_singleplayer")) {
675 args_pattern += " --quickPlaySingleplayer " + targetToJoin->world;
676 }
677 }
678
679 QMap<QString, QString> token_mapping;
680 // yggdrasil!
681 if (session) {
682 // token_mapping["auth_username"] = session->username;
683 token_mapping["auth_session"] = session->session;
684 token_mapping["auth_access_token"] = session->access_token;
685 token_mapping["auth_player_name"] = session->player_name;
686 token_mapping["auth_uuid"] = session->uuid;
687 token_mapping["user_properties"] = session->serializeUserProperties();
688 token_mapping["user_type"] = session->user_type;
689 if (session->demo) {
690 args_pattern += " --demo";
691 }
692 }
693
694 token_mapping["profile_name"] = name();
695 token_mapping["version_name"] = profile->getMinecraftVersion();
696 token_mapping["version_type"] = profile->getMinecraftVersionType();
697
698 QString absRootDir = QDir(gameRoot()).absolutePath();
699 token_mapping["game_directory"] = absRootDir;
700 QString absAssetsDir = QDir("assets/").absolutePath();
701 auto assets = profile->getMinecraftAssets();
702 token_mapping["game_assets"] = AssetsUtils::getAssetsDir(assets->id, resourcesDir()).absolutePath();
703
704 // 1.7.3+ assets tokens
705 token_mapping["assets_root"] = absAssetsDir;
706 token_mapping["assets_index_name"] = assets->id;
707
708#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
709 QStringList parts = args_pattern.split(' ', Qt::SkipEmptyParts);
710#else
711 QStringList parts = args_pattern.split(' ', QString::SkipEmptyParts);
712#endif
713 for (int i = 0; i < parts.length(); i++) {
714 parts[i] = replaceTokensIn(parts[i], token_mapping);
715 }

Callers

nothing calls this directly

Calls 11

getAssetsDirFunction · 0.85
replaceTokensInFunction · 0.85
getProfileMethod · 0.80
getMinecraftArgumentsMethod · 0.80
hasTraitMethod · 0.80
getMinecraftVersionMethod · 0.80
getMinecraftAssetsMethod · 0.80
QDirClass · 0.50
isEmptyMethod · 0.45

Tested by

no test coverage detected