| 656 | } |
| 657 | |
| 658 | QStringList 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 | } |
nothing calls this directly
no test coverage detected