mirror of
https://github.com/UltimMC/Launcher.git
synced 2025-10-03 16:51:30 +00:00
Solve conflicts
This commit is contained in:
36
changelog.md
36
changelog.md
@@ -1,4 +1,36 @@
|
||||
# MultiMC 0.6.15
|
||||
# MultiMC 0.6.16
|
||||
|
||||
This brings some good and bad changes to modpack platforms, along with various fixes.
|
||||
|
||||
We've added Modrinth as a directly supported modpack platform. It's nice, and the list of packs availale from it is slowly growing.
|
||||
|
||||
We can no longer directly import FTB modpacks from the FTB platform. Instead, this has been replaced by import from the [FTB App](https://www.feed-the-beast.com/app). You can get FTB modpacks through the FTB App and then import them into MultiMC using the `FTB App Import` page in `Add Instance`.
|
||||
|
||||
We can also no longer directly download CurseForge modpacks, although this should be only temporary (once the issues we have with the CurseForge API ToS are resolved, it will make a comeback). Currently, you can get CurseForge packs using the `FTB App Import`, just make sure you switch the FTB App to the CurseForge mode. The button for that isn't too obvious, look for the CurseForge logo.
|
||||
|
||||
Aside from these changes, the release brings some general fixes.
|
||||
|
||||
#### Changes, itemized.
|
||||
|
||||
- Modrinth platform has been added, along with importing `.mrpack` files.
|
||||
- FTB App Import has been added as a way to automate copying over modpacks installed using the FTB App.
|
||||
- Curseforge platform and importing `.zip` files from the platform has been removed (replaced by FTB App Import).
|
||||
- FTB platform has been removed (replaced by FTB App Import).
|
||||
- MultiMC is now blocking passing the `-version` argument to the Java Runtime. This should stop some really strange (unaccounted for) things from happening.
|
||||
- GH-3742: Added Quilt modloader installation button and support for importing Quilt-using modpacks in general.
|
||||
- When the game crashes on Windows, MultiMC gives you a nicer representation of what the exit code could mean.
|
||||
- Some odd corner cases when importing ATLauncher modpacks are now handled better.
|
||||
- Custom player name for offline mode is now saved for your convenience.
|
||||
- GH-3012: Added command line options to launch instances offline.
|
||||
|
||||
Used like this:
|
||||
```
|
||||
./MultiMC --launch 1.17.1 --offline --name Steve
|
||||
```
|
||||
|
||||
# Previous releases
|
||||
|
||||
## MultiMC 0.6.15
|
||||
|
||||
This is mostly a bugfix release.
|
||||
|
||||
@@ -27,8 +59,6 @@ This is mostly a bugfix release.
|
||||
- GH-4299: Fix crash when uploading screenshots.
|
||||
- Added the capability to copypaste screenshots as raw images (to image editors) and files (to file explorers).
|
||||
|
||||
# Previous releases
|
||||
|
||||
## MultiMC 0.6.14
|
||||
|
||||
This further refines Microsoft account support, along with small fixes related to modpack platforms and Java runtime detection.
|
||||
|
@@ -249,6 +249,14 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
|
||||
parser.addOption("profile");
|
||||
parser.addShortOpt("profile", 'a');
|
||||
parser.addDocumentation("profile", "Use the account specified by its profile name (only valid in combination with --launch)");
|
||||
// --offline
|
||||
parser.addSwitch("offline");
|
||||
parser.addShortOpt("offline", 'o');
|
||||
parser.addDocumentation("offline", "Launch offline (only valid in combination with --launch)");
|
||||
// --name
|
||||
parser.addOption("name");
|
||||
parser.addShortOpt("name", 'n');
|
||||
parser.addDocumentation("name", "When launching offline, use specified name (only makes sense in combination with --launch and --offline)");
|
||||
// --alive
|
||||
parser.addSwitch("alive");
|
||||
parser.addDocumentation("alive", "Write a small '" + liveCheckFile + "' file after the launcher starts");
|
||||
@@ -292,6 +300,10 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
|
||||
m_instanceIdToLaunch = args["launch"].toString();
|
||||
m_serverToJoin = args["server"].toString();
|
||||
m_profileToUse = args["profile"].toString();
|
||||
if(args["offline"].toBool()) {
|
||||
m_offline = true;
|
||||
m_offlineName = args["name"].toString();
|
||||
}
|
||||
m_liveCheck = args["alive"].toBool();
|
||||
m_zipToImport = args["import"].toUrl();
|
||||
|
||||
@@ -357,20 +369,46 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_instanceIdToLaunch.isEmpty() && !m_serverToJoin.isEmpty())
|
||||
// all the things invalid when NOT trying to --launch
|
||||
if(m_instanceIdToLaunch.isEmpty()) {
|
||||
if(!m_serverToJoin.isEmpty())
|
||||
{
|
||||
std::cerr << "--server can only be used in combination with --launch!" << std::endl;
|
||||
m_status = Application::Failed;
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_instanceIdToLaunch.isEmpty() && !m_profileToUse.isEmpty())
|
||||
if(!m_profileToUse.isEmpty())
|
||||
{
|
||||
std::cerr << "--account can only be used in combination with --launch!" << std::endl;
|
||||
m_status = Application::Failed;
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_offline)
|
||||
{
|
||||
std::cerr << "--offline can only be used in combination with --launch!" << std::endl;
|
||||
m_status = Application::Failed;
|
||||
return;
|
||||
}
|
||||
|
||||
if(!m_offlineName.isEmpty())
|
||||
{
|
||||
std::cerr << "--offlineName can only be used in combination with --launch and --offline!" << std::endl;
|
||||
m_status = Application::Failed;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// all the things invalid when trying to --launch
|
||||
// online, and offline name is set
|
||||
if(!m_offline && !m_offlineName.isEmpty()) {
|
||||
std::cerr << "--offlineName can only be used in combination with --launch and --offline!" << std::endl;
|
||||
m_status = Application::Failed;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
// move user data to new location if on macOS and it still exists in Contents/MacOS
|
||||
QDir fi(applicationDirPath());
|
||||
@@ -475,6 +513,10 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
|
||||
{
|
||||
launch.args["profile"] = m_profileToUse;
|
||||
}
|
||||
if(m_offline) {
|
||||
launch.args["offline_enabled"] = "true";
|
||||
launch.args["offline_name"] = m_offlineName;
|
||||
}
|
||||
m_peerInstance->sendMessage(launch.serialize(), timeout);
|
||||
}
|
||||
m_status = Application::Succeeded;
|
||||
@@ -1043,6 +1085,7 @@ void Application::performMainStartupAction()
|
||||
{
|
||||
MinecraftServerTargetPtr serverToJoin = nullptr;
|
||||
MinecraftAccountPtr accountToUse = nullptr;
|
||||
bool offline = m_offline;
|
||||
|
||||
qDebug() << "<> Instance" << m_instanceIdToLaunch << "launching";
|
||||
if(!m_serverToJoin.isEmpty())
|
||||
@@ -1061,7 +1104,7 @@ void Application::performMainStartupAction()
|
||||
qDebug() << " Launching with account" << m_profileToUse;
|
||||
}
|
||||
|
||||
launch(inst, true, nullptr, serverToJoin, accountToUse);
|
||||
launch(inst, !offline, nullptr, serverToJoin, accountToUse, m_offlineName);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1134,6 +1177,8 @@ void Application::messageReceived(const QByteArray& message)
|
||||
QString id = received.args["id"];
|
||||
QString server = received.args["server"];
|
||||
QString profile = received.args["profile"];
|
||||
bool offline = received.args["offline_enabled"] == "true";
|
||||
QString offlineName = received.args["offline_name"];
|
||||
|
||||
InstancePtr instance;
|
||||
if(!id.isEmpty()) {
|
||||
@@ -1164,10 +1209,11 @@ void Application::messageReceived(const QByteArray& message)
|
||||
|
||||
launch(
|
||||
instance,
|
||||
true,
|
||||
!offline,
|
||||
nullptr,
|
||||
serverObject,
|
||||
accountObject
|
||||
accountObject,
|
||||
offlineName
|
||||
);
|
||||
}
|
||||
else
|
||||
@@ -1265,7 +1311,8 @@ bool Application::launch(
|
||||
bool online,
|
||||
BaseProfilerFactory *profiler,
|
||||
MinecraftServerTargetPtr serverToJoin,
|
||||
MinecraftAccountPtr accountToUse
|
||||
MinecraftAccountPtr accountToUse,
|
||||
const QString& offlineName
|
||||
) {
|
||||
if(m_updateRunning)
|
||||
{
|
||||
@@ -1290,6 +1337,7 @@ bool Application::launch(
|
||||
controller->setServerToJoin(serverToJoin);
|
||||
controller->setAuthserver(m_authserver);
|
||||
controller->setAccountToUse(accountToUse);
|
||||
controller->setOfflineName(offlineName);
|
||||
if(window)
|
||||
{
|
||||
controller->setParentWidget(window);
|
||||
|
@@ -155,7 +155,8 @@ public slots:
|
||||
bool online = true,
|
||||
BaseProfilerFactory *profiler = nullptr,
|
||||
MinecraftServerTargetPtr serverToJoin = nullptr,
|
||||
MinecraftAccountPtr accountToUse = nullptr
|
||||
MinecraftAccountPtr accountToUse = nullptr,
|
||||
const QString &offlineName = QString()
|
||||
);
|
||||
bool kill(InstancePtr instance);
|
||||
|
||||
@@ -236,6 +237,8 @@ public:
|
||||
QString m_instanceIdToLaunch;
|
||||
QString m_serverToJoin;
|
||||
QString m_profileToUse;
|
||||
bool m_offline = false;
|
||||
QString m_offlineName;
|
||||
bool m_liveCheck = false;
|
||||
QUrl m_zipToImport;
|
||||
std::unique_ptr<QFile> logFile;
|
||||
|
@@ -29,6 +29,10 @@ public:
|
||||
m_online = online;
|
||||
}
|
||||
|
||||
void setOfflineName(const QString &offlineName) {
|
||||
m_offlineName = offlineName;
|
||||
}
|
||||
|
||||
void setProfiler(BaseProfilerFactory *profiler) {
|
||||
m_profiler = profiler;
|
||||
}
|
||||
@@ -71,6 +75,7 @@ private slots:
|
||||
private:
|
||||
BaseProfilerFactory *m_profiler = nullptr;
|
||||
bool m_online = true;
|
||||
QString m_offlineName;
|
||||
InstancePtr m_instance;
|
||||
QWidget * m_parentWidget = nullptr;
|
||||
InstanceWindow *m_console = nullptr;
|
||||
|
Reference in New Issue
Block a user