NOISSUE Add support for joining servers via Quick Play

This commit is contained in:
arthomnix 2023-04-08 10:29:12 +01:00
parent c1ed09e747
commit 22f82c34bf
4 changed files with 33 additions and 11 deletions

View File

@ -48,6 +48,7 @@
#include "MinecraftLoadAndCheck.h" #include "MinecraftLoadAndCheck.h"
#include "minecraft/gameoptions/GameOptions.h" #include "minecraft/gameoptions/GameOptions.h"
#include "minecraft/update/FoldersTask.h" #include "minecraft/update/FoldersTask.h"
#include "minecraft/VersionFilterData.h"
#define IBUS "@im=ibus" #define IBUS "@im=ibus"
@ -425,10 +426,17 @@ QStringList MinecraftInstance::processMinecraftArgs(
if (serverToJoin && !serverToJoin->address.isEmpty()) if (serverToJoin && !serverToJoin->address.isEmpty())
{ {
args_pattern += " --server " + serverToJoin->address; if (m_components->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate)
args_pattern += " --port " + QString::number(serverToJoin->port); {
args_pattern += " --quickPlayMultiplayer " + serverToJoin->address + ":" + QString::number(serverToJoin->port);
}
else
{
args_pattern += " --server " + serverToJoin->address;
args_pattern += " --port " + QString::number(serverToJoin->port);
}
} }
QMap<QString, QString> token_mapping; QMap<QString, QString> token_mapping;
// yggdrasil! // yggdrasil!
if(session) { if(session) {
@ -489,6 +497,7 @@ QString MinecraftInstance::createLaunchScript(AuthSessionPtr session, MinecraftS
if (serverToJoin && !serverToJoin->address.isEmpty()) if (serverToJoin && !serverToJoin->address.isEmpty())
{ {
launchScript += "useQuickPlay " + QString::number(m_components->getComponent("net.minecraft")->getReleaseDateTime() >= g_VersionFilterData.quickPlayBeginsDate) + "\n";
launchScript += "serverAddress " + serverToJoin->address + "\n"; launchScript += "serverAddress " + serverToJoin->address + "\n";
launchScript += "serverPort " + QString::number(serverToJoin->port) + "\n"; launchScript += "serverPort " + QString::number(serverToJoin->port) + "\n";
} }

View File

@ -66,7 +66,8 @@ VersionFilterData::VersionFilterData()
"net.java.jutils:jutils", "org.lwjgl.lwjgl:lwjgl", "net.java.jutils:jutils", "org.lwjgl.lwjgl:lwjgl",
"org.lwjgl.lwjgl:lwjgl_util", "org.lwjgl.lwjgl:lwjgl-platform"}; "org.lwjgl.lwjgl:lwjgl_util", "org.lwjgl.lwjgl:lwjgl-platform"};
java8BeginsDate = timeFromS3Time("2017-03-30T09:32:19+00:00"); java8BeginsDate = timeFromS3Time("2017-03-30T09:32:19+00:00");
java16BeginsDate = timeFromS3Time("2021-05-12T11:19:15+00:00"); java16BeginsDate = timeFromS3Time("2021-05-12T11:19:15+00:00");
java17BeginsDate = timeFromS3Time("2021-11-16T17:04:48+00:00"); java17BeginsDate = timeFromS3Time("2021-11-16T17:04:48+00:00");
quickPlayBeginsDate = timeFromS3Time("2023-04-05T12:05:17+00:00");
} }

View File

@ -27,5 +27,7 @@ struct VersionFilterData
QDateTime java16BeginsDate; QDateTime java16BeginsDate;
// release data of first version to require Java 17 (1.18 Pre Release 2) // release data of first version to require Java 17 (1.18 Pre Release 2)
QDateTime java17BeginsDate; QDateTime java17BeginsDate;
// release date of first version to use --quickPlayMultiplayer instead of --server/--port for directly joining servers
QDateTime quickPlayBeginsDate;
}; };
extern VersionFilterData g_VersionFilterData; extern VersionFilterData g_VersionFilterData;

View File

@ -1,4 +1,4 @@
/* Copyright 2012-2021 MultiMC Contributors /* Copyright 2012-2023 MultiMC Contributors
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -53,6 +53,7 @@ public class OneSixLauncher implements Launcher
private String serverAddress; private String serverAddress;
private String serverPort; private String serverPort;
private boolean useQuickPlay;
// the much abused system classloader, for convenience (for further abuse) // the much abused system classloader, for convenience (for further abuse)
private ClassLoader cl; private ClassLoader cl;
@ -80,6 +81,7 @@ public class OneSixLauncher implements Launcher
serverAddress = params.firstSafe("serverAddress", null); serverAddress = params.firstSafe("serverAddress", null);
serverPort = params.firstSafe("serverPort", null); serverPort = params.firstSafe("serverPort", null);
useQuickPlay = params.firstSafe("useQuickPlay").startsWith("1");
cwd = System.getProperty("user.dir"); cwd = System.getProperty("user.dir");
@ -185,10 +187,18 @@ public class OneSixLauncher implements Launcher
if (serverAddress != null) if (serverAddress != null)
{ {
mcparams.add("--server"); if (useQuickPlay)
mcparams.add(serverAddress); {
mcparams.add("--port"); mcparams.add("--quickPlayMultiplayer");
mcparams.add(serverPort); mcparams.add(serverAddress + ":" + serverPort);
}
else
{
mcparams.add("--server");
mcparams.add(serverAddress);
mcparams.add("--port");
mcparams.add(serverPort);
}
} }
// Get the Minecraft Class. // Get the Minecraft Class.