mirror of
https://github.com/UltimMC/Launcher.git
synced 2025-10-03 16:51:30 +00:00
NOISSUE Add support for launching worlds directly via Quick Play
This commit is contained in:
@@ -55,7 +55,7 @@ void DirectJavaLaunch::executeTask()
|
||||
// make detachable - this will keep the process running even if the object is destroyed
|
||||
m_process.setDetachable(true);
|
||||
|
||||
auto mcArgs = minecraftInstance->processMinecraftArgs(m_session, m_serverToJoin);
|
||||
auto mcArgs = minecraftInstance->processMinecraftArgs(m_session, m_quickPlayTarget);
|
||||
args.append(mcArgs);
|
||||
|
||||
QString wrapperCommandStr = instance->getWrapperCommand().trimmed();
|
||||
|
@@ -19,7 +19,7 @@
|
||||
#include <LoggedProcess.h>
|
||||
#include <minecraft/auth/AuthSession.h>
|
||||
|
||||
#include "MinecraftServerTarget.h"
|
||||
#include "QuickPlayTarget.h"
|
||||
|
||||
class DirectJavaLaunch: public LaunchStep
|
||||
{
|
||||
@@ -41,9 +41,9 @@ public:
|
||||
m_session = session;
|
||||
}
|
||||
|
||||
void setServerToJoin(MinecraftServerTargetPtr serverToJoin)
|
||||
void setQuickPlayTarget(QuickPlayTargetPtr quickPlayTarget)
|
||||
{
|
||||
m_serverToJoin = std::move(serverToJoin);
|
||||
m_quickPlayTarget = std::move(quickPlayTarget);
|
||||
}
|
||||
|
||||
private slots:
|
||||
@@ -53,6 +53,6 @@ private:
|
||||
LoggedProcess m_process;
|
||||
QString m_command;
|
||||
AuthSessionPtr m_session;
|
||||
MinecraftServerTargetPtr m_serverToJoin;
|
||||
QuickPlayTargetPtr m_quickPlayTarget;
|
||||
};
|
||||
|
||||
|
@@ -60,7 +60,7 @@ void LauncherPartLaunch::executeTask()
|
||||
auto instance = m_parent->instance();
|
||||
std::shared_ptr<MinecraftInstance> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(instance);
|
||||
|
||||
m_launchScript = minecraftInstance->createLaunchScript(m_session, m_serverToJoin);
|
||||
m_launchScript = minecraftInstance->createLaunchScript(m_session, m_quickPlayTarget);
|
||||
QStringList args = minecraftInstance->javaArguments();
|
||||
QString allArgs = args.join(", ");
|
||||
emit logLine("Java Arguments:\n[" + m_parent->censorPrivateInfo(allArgs) + "]\n\n", MessageLevel::Launcher);
|
||||
|
@@ -19,7 +19,7 @@
|
||||
#include <LoggedProcess.h>
|
||||
#include <minecraft/auth/AuthSession.h>
|
||||
|
||||
#include "MinecraftServerTarget.h"
|
||||
#include "QuickPlayTarget.h"
|
||||
|
||||
class LauncherPartLaunch: public LaunchStep
|
||||
{
|
||||
@@ -41,9 +41,9 @@ public:
|
||||
m_session = session;
|
||||
}
|
||||
|
||||
void setServerToJoin(MinecraftServerTargetPtr serverToJoin)
|
||||
void setQuickPlayTarget(QuickPlayTargetPtr quickPlayTarget)
|
||||
{
|
||||
m_serverToJoin = std::move(serverToJoin);
|
||||
m_quickPlayTarget = std::move(quickPlayTarget);
|
||||
}
|
||||
|
||||
private slots:
|
||||
@@ -54,7 +54,7 @@ private:
|
||||
QString m_command;
|
||||
AuthSessionPtr m_session;
|
||||
QString m_launchScript;
|
||||
MinecraftServerTargetPtr m_serverToJoin;
|
||||
QuickPlayTargetPtr m_quickPlayTarget;
|
||||
|
||||
bool mayProceed = false;
|
||||
};
|
||||
|
@@ -142,6 +142,6 @@ void PrintInstanceInfo::executeTask()
|
||||
#endif
|
||||
|
||||
logLines(log, MessageLevel::Launcher);
|
||||
logLines(instance->verboseDescription(m_session, m_serverToJoin), MessageLevel::Launcher);
|
||||
logLines(instance->verboseDescription(m_session, m_quickPlayTarget), MessageLevel::Launcher);
|
||||
emitSucceeded();
|
||||
}
|
||||
|
@@ -18,15 +18,15 @@
|
||||
#include <launch/LaunchStep.h>
|
||||
#include <memory>
|
||||
#include "minecraft/auth/AuthSession.h"
|
||||
#include "minecraft/launch/MinecraftServerTarget.h"
|
||||
#include "minecraft/launch/QuickPlayTarget.h"
|
||||
|
||||
// FIXME: temporary wrapper for existing task.
|
||||
class PrintInstanceInfo: public LaunchStep
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PrintInstanceInfo(LaunchTask *parent, AuthSessionPtr session, MinecraftServerTargetPtr serverToJoin) :
|
||||
LaunchStep(parent), m_session(session), m_serverToJoin(serverToJoin) {};
|
||||
explicit PrintInstanceInfo(LaunchTask *parent, AuthSessionPtr session, QuickPlayTargetPtr quickPlayTarget) :
|
||||
LaunchStep(parent), m_session(session), m_quickPlayTarget(quickPlayTarget) {};
|
||||
virtual ~PrintInstanceInfo(){};
|
||||
|
||||
virtual void executeTask();
|
||||
@@ -36,6 +36,6 @@ public:
|
||||
}
|
||||
private:
|
||||
AuthSessionPtr m_session;
|
||||
MinecraftServerTargetPtr m_serverToJoin;
|
||||
QuickPlayTargetPtr m_quickPlayTarget;
|
||||
};
|
||||
|
||||
|
@@ -13,12 +13,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "MinecraftServerTarget.h"
|
||||
#include "QuickPlayTarget.h"
|
||||
|
||||
#include <QStringList>
|
||||
|
||||
// FIXME: the way this is written, it can't ever do any sort of validation and can accept total junk
|
||||
MinecraftServerTarget MinecraftServerTarget::parse(const QString &fullAddress) {
|
||||
QuickPlayTarget QuickPlayTarget::parseMultiplayer(const QString &fullAddress) {
|
||||
QStringList split = fullAddress.split(":");
|
||||
|
||||
// The logic below replicates the exact logic minecraft uses for parsing server addresses.
|
||||
@@ -63,5 +63,12 @@ MinecraftServerTarget MinecraftServerTarget::parse(const QString &fullAddress) {
|
||||
}
|
||||
}
|
||||
|
||||
return MinecraftServerTarget { realAddress, realPort };
|
||||
return QuickPlayTarget {realAddress, realPort };
|
||||
}
|
||||
|
||||
QuickPlayTarget QuickPlayTarget::parseSingleplayer(const QString &worldName)
|
||||
{
|
||||
QuickPlayTarget target;
|
||||
target.world = worldName;
|
||||
return target;
|
||||
}
|
@@ -19,11 +19,16 @@
|
||||
|
||||
#include <QString>
|
||||
|
||||
struct MinecraftServerTarget {
|
||||
struct QuickPlayTarget {
|
||||
// Multiplayer
|
||||
QString address;
|
||||
quint16 port;
|
||||
|
||||
static MinecraftServerTarget parse(const QString &fullAddress);
|
||||
// Singleplayer
|
||||
QString world;
|
||||
|
||||
static QuickPlayTarget parseMultiplayer(const QString &fullAddress);
|
||||
static QuickPlayTarget parseSingleplayer(const QString &worldName);
|
||||
};
|
||||
|
||||
typedef std::shared_ptr<MinecraftServerTarget> MinecraftServerTargetPtr;
|
||||
typedef std::shared_ptr<QuickPlayTarget> QuickPlayTargetPtr;
|
Reference in New Issue
Block a user