Version changing removes any existing version json.
This commit is contained in:
parent
eaf0cbeafc
commit
73f8bc5c92
@ -7,7 +7,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>527</width>
|
||||
<height>68</height>
|
||||
<height>113</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
@ -28,12 +28,6 @@
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_ModText">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Select a mod to view title and authors...</string>
|
||||
</property>
|
||||
@ -53,12 +47,6 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_ModDescription">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Select a mod to view description...</string>
|
||||
</property>
|
||||
|
@ -606,6 +606,15 @@ void MainWindow::on_actionChangeInstMCVersion_triggered()
|
||||
vselect.setFilter(1, "OneSix");
|
||||
if (vselect.exec() && vselect.selectedVersion())
|
||||
{
|
||||
if (m_selectedInstance->versionIsCustom())
|
||||
{
|
||||
auto result = QMessageBox::warning(
|
||||
this, tr("Are you sure?"),
|
||||
tr("This will remove any library/version customization you did previously. "
|
||||
"This includes things like Forge install and similar."), QMessageBox::Ok, QMessageBox::Abort);
|
||||
if(result != QMessageBox::Ok)
|
||||
return;
|
||||
}
|
||||
m_selectedInstance->setIntendedVersionId(vselect.selectedVersion()->descriptor());
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
@ -33,9 +33,9 @@ class BaseInstancePrivate;
|
||||
|
||||
/*!
|
||||
* \brief Base class for instances.
|
||||
* This class implements many functions that are common between instances and
|
||||
* This class implements many functions that are common between instances and
|
||||
* provides a standard interface for all instances.
|
||||
*
|
||||
*
|
||||
* To create a new instance type, create a new class inheriting from this class
|
||||
* and implement the pure virtual functions.
|
||||
*/
|
||||
@ -44,66 +44,72 @@ class BaseInstance : public QObject
|
||||
Q_OBJECT
|
||||
protected:
|
||||
/// no-touchy!
|
||||
BaseInstance(BaseInstancePrivate * d, const QString &rootDir, SettingsObject * settings, QObject *parent = 0);
|
||||
BaseInstance(BaseInstancePrivate *d, const QString &rootDir, SettingsObject *settings,
|
||||
QObject *parent = 0);
|
||||
|
||||
public:
|
||||
/// virtual destructor to make sure the destruction is COMPLETE
|
||||
virtual ~BaseInstance() {};
|
||||
|
||||
/// nuke thoroughly - deletes the instance contents, notifies the list/model which is responsible of cleaning up the husk
|
||||
|
||||
/// nuke thoroughly - deletes the instance contents, notifies the list/model which is
|
||||
/// responsible of cleaning up the husk
|
||||
void nuke();
|
||||
|
||||
/// The instance's ID. The ID SHALL be determined by MMC internally. The ID IS guaranteed to be unique.
|
||||
|
||||
/// The instance's ID. The ID SHALL be determined by MMC internally. The ID IS guaranteed to
|
||||
/// be unique.
|
||||
QString id() const;
|
||||
|
||||
|
||||
/// get the type of this instance
|
||||
QString instanceType() const;
|
||||
|
||||
|
||||
/// Path to the instance's root directory.
|
||||
QString instanceRoot() const;
|
||||
|
||||
|
||||
/// Path to the instance's minecraft directory.
|
||||
QString minecraftRoot() const;
|
||||
|
||||
|
||||
QString name() const;
|
||||
void setName(QString val);
|
||||
|
||||
|
||||
QString iconKey() const;
|
||||
void setIconKey(QString val);
|
||||
|
||||
|
||||
QString notes() const;
|
||||
void setNotes(QString val);
|
||||
|
||||
|
||||
QString group() const;
|
||||
void setGroupInitial(QString val);
|
||||
void setGroupPost(QString val);
|
||||
|
||||
|
||||
|
||||
virtual QString intendedVersionId() const = 0;
|
||||
virtual bool setIntendedVersionId(QString version) = 0;
|
||||
|
||||
|
||||
virtual bool versionIsCustom() = 0;
|
||||
|
||||
/*!
|
||||
* The instance's current version.
|
||||
* This value represents the instance's current version. If this value is
|
||||
* This value represents the instance's current version. If this value is
|
||||
* different from the intendedVersion, the instance should be updated.
|
||||
* \warning Don't change this value unless you know what you're doing.
|
||||
*/
|
||||
virtual QString currentVersionId() const = 0;
|
||||
//virtual void setCurrentVersionId(QString val) = 0;
|
||||
|
||||
// virtual void setCurrentVersionId(QString val) = 0;
|
||||
|
||||
/*!
|
||||
* Whether or not Minecraft should be downloaded when the instance is launched.
|
||||
*/
|
||||
virtual bool shouldUpdate() const = 0;
|
||||
virtual void setShouldUpdate(bool val) = 0;
|
||||
|
||||
/// Get the curent base jar of this instance. By default, it's the versions/$version/$version.jar
|
||||
/// Get the curent base jar of this instance. By default, it's the
|
||||
/// versions/$version/$version.jar
|
||||
QString baseJar() const;
|
||||
|
||||
/// the default base jar of this instance
|
||||
virtual QString defaultBaseJar() const = 0;
|
||||
/// the default custom base jar of this instance
|
||||
virtual QString defaultCustomBaseJar() const = 0;
|
||||
|
||||
|
||||
/*!
|
||||
* Whether or not custom base jar is used
|
||||
*/
|
||||
@ -114,7 +120,7 @@ public:
|
||||
*/
|
||||
QString customBaseJar() const;
|
||||
void setCustomBaseJar(QString val);
|
||||
|
||||
|
||||
/**
|
||||
* Gets the time that the instance was last launched.
|
||||
* Stored in milliseconds since epoch.
|
||||
@ -122,53 +128,54 @@ public:
|
||||
qint64 lastLaunch() const;
|
||||
/// Sets the last launched time to 'val' milliseconds since epoch
|
||||
void setLastLaunch(qint64 val = QDateTime::currentMSecsSinceEpoch());
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Gets the instance list that this instance is a part of.
|
||||
* Returns NULL if this instance is not in a list
|
||||
* \brief Gets the instance list that this instance is a part of.
|
||||
* Returns NULL if this instance is not in a list
|
||||
* (the parent is not an InstanceList).
|
||||
* \return A pointer to the InstanceList containing this instance.
|
||||
* \return A pointer to the InstanceList containing this instance.
|
||||
*/
|
||||
InstanceList *instList() const;
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Gets a pointer to this instance's version list.
|
||||
* \return A pointer to the available version list for this instance.
|
||||
*/
|
||||
virtual std::shared_ptr<BaseVersionList> versionList() const;
|
||||
|
||||
|
||||
/*!
|
||||
* \brief Gets this instance's settings object.
|
||||
* This settings object stores instance-specific settings.
|
||||
* \return A pointer to this instance's settings object.
|
||||
*/
|
||||
virtual SettingsObject &settings() const;
|
||||
|
||||
|
||||
/// returns a valid update task if update is needed, NULL otherwise
|
||||
virtual BaseUpdate* doUpdate() = 0;
|
||||
|
||||
virtual BaseUpdate *doUpdate() = 0;
|
||||
|
||||
/// returns a valid minecraft process, ready for launch
|
||||
virtual MinecraftProcess* prepareForLaunch(LoginResponse response) = 0;
|
||||
|
||||
/// do any necessary cleanups after the instance finishes. also runs before 'prepareForLaunch'
|
||||
virtual MinecraftProcess *prepareForLaunch(LoginResponse response) = 0;
|
||||
|
||||
/// do any necessary cleanups after the instance finishes. also runs before
|
||||
/// 'prepareForLaunch'
|
||||
virtual void cleanupAfterRun() = 0;
|
||||
|
||||
|
||||
/// create a mod edit dialog for the instance
|
||||
virtual QDialog * createModEditDialog ( QWidget* parent ) = 0;
|
||||
|
||||
virtual QDialog *createModEditDialog(QWidget *parent) = 0;
|
||||
|
||||
/// is a particular action enabled with this instance selected?
|
||||
virtual bool menuActionEnabled(QString action_name) const = 0;
|
||||
|
||||
|
||||
virtual QString getStatusbarDescription() = 0;
|
||||
|
||||
|
||||
/// FIXME: this really should be elsewhere...
|
||||
virtual QString instanceConfigFolder() const = 0;
|
||||
|
||||
|
||||
signals:
|
||||
/*!
|
||||
* \brief Signal emitted when properties relevant to the instance view change
|
||||
*/
|
||||
void propertiesChanged(BaseInstance * inst);
|
||||
void propertiesChanged(BaseInstance *inst);
|
||||
/*!
|
||||
* \brief Signal emitted when groups are affected in any way
|
||||
*/
|
||||
@ -176,12 +183,11 @@ signals:
|
||||
/*!
|
||||
* \brief The instance just got nuked. Hurray!
|
||||
*/
|
||||
void nuked(BaseInstance * inst);
|
||||
|
||||
void nuked(BaseInstance *inst);
|
||||
|
||||
protected:
|
||||
std::shared_ptr<BaseInstancePrivate> inst_d;
|
||||
};
|
||||
|
||||
// pointer for lazy people
|
||||
typedef std::shared_ptr<BaseInstance> InstancePtr;
|
||||
|
||||
|
@ -9,21 +9,22 @@ class LegacyInstance : public BaseInstance
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
explicit LegacyInstance(const QString &rootDir, SettingsObject * settings, QObject *parent = 0);
|
||||
|
||||
|
||||
explicit LegacyInstance(const QString &rootDir, SettingsObject *settings,
|
||||
QObject *parent = 0);
|
||||
|
||||
/// Path to the instance's minecraft.jar
|
||||
QString runnableJar() const;
|
||||
|
||||
|
||||
//! Path to the instance's modlist file.
|
||||
QString modListFile() const;
|
||||
|
||||
|
||||
////// Mod Lists //////
|
||||
std::shared_ptr<ModList> jarModList();
|
||||
std::shared_ptr<ModList> coreModList();
|
||||
std::shared_ptr<ModList> loaderModList();
|
||||
std::shared_ptr<ModList> texturePackList();
|
||||
|
||||
|
||||
////// Directories //////
|
||||
QString savesDir() const;
|
||||
QString texturePacksDir() const;
|
||||
@ -33,40 +34,47 @@ public:
|
||||
QString coreModsDir() const;
|
||||
QString resourceDir() const;
|
||||
virtual QString instanceConfigFolder() const;
|
||||
|
||||
|
||||
/*!
|
||||
* Whether or not the instance's minecraft.jar needs to be rebuilt.
|
||||
* If this is true, when the instance launches, its jar mods will be
|
||||
* If this is true, when the instance launches, its jar mods will be
|
||||
* re-added to a fresh minecraft.jar file.
|
||||
*/
|
||||
bool shouldRebuild() const;
|
||||
void setShouldRebuild(bool val);
|
||||
|
||||
|
||||
virtual QString currentVersionId() const;
|
||||
virtual void setCurrentVersionId(QString val);
|
||||
|
||||
|
||||
//! The version of LWJGL that this instance uses.
|
||||
QString lwjglVersion() const;
|
||||
/// st the version of LWJGL libs this instance will use
|
||||
void setLWJGLVersion(QString val);
|
||||
|
||||
|
||||
virtual QString intendedVersionId() const;
|
||||
virtual bool setIntendedVersionId ( QString version );
|
||||
|
||||
virtual bool setIntendedVersionId(QString version);
|
||||
// the `version' of Legacy instances is defined by the launcher code.
|
||||
// in contrast with OneSix, where `version' is described in a json file
|
||||
virtual bool versionIsCustom() override
|
||||
{
|
||||
return false;
|
||||
};
|
||||
|
||||
virtual bool shouldUpdate() const;
|
||||
virtual void setShouldUpdate(bool val);
|
||||
virtual BaseUpdate* doUpdate();
|
||||
|
||||
virtual MinecraftProcess* prepareForLaunch(LoginResponse response);
|
||||
virtual BaseUpdate *doUpdate();
|
||||
|
||||
virtual MinecraftProcess *prepareForLaunch(LoginResponse response);
|
||||
virtual void cleanupAfterRun();
|
||||
virtual QDialog * createModEditDialog ( QWidget* parent );
|
||||
|
||||
virtual QDialog *createModEditDialog(QWidget *parent);
|
||||
|
||||
virtual QString defaultBaseJar() const;
|
||||
virtual QString defaultCustomBaseJar() const;
|
||||
|
||||
bool menuActionEnabled ( QString action_name ) const;
|
||||
|
||||
bool menuActionEnabled(QString action_name) const;
|
||||
virtual QString getStatusbarDescription();
|
||||
|
||||
protected slots:
|
||||
|
||||
protected
|
||||
slots:
|
||||
virtual void jarModsChanged();
|
||||
};
|
@ -57,7 +57,7 @@ void LegacyUpdate::lwjglStart()
|
||||
auto worker = MMC->qnam();
|
||||
QNetworkRequest req(realUrl);
|
||||
req.setRawHeader("Host", hostname.toLatin1());
|
||||
req.setHeader(QNetworkRequest::UserAgentHeader, "Wget/1.14 (linux-gnu)");
|
||||
req.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Cached)");
|
||||
QNetworkReply *rep = worker->get(req);
|
||||
|
||||
m_reply = std::shared_ptr<QNetworkReply>(rep);
|
||||
@ -100,7 +100,7 @@ void LegacyUpdate::lwjglFinished(QNetworkReply *reply)
|
||||
QString hostname = realUrl.host();
|
||||
QNetworkRequest req(redirectedTo);
|
||||
req.setRawHeader("Host", hostname.toLatin1());
|
||||
req.setHeader(QNetworkRequest::UserAgentHeader, "Wget/1.14 (linux-gnu)");
|
||||
req.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Cached)");
|
||||
QNetworkReply *rep = worker->get(req);
|
||||
connect(rep, SIGNAL(downloadProgress(qint64, qint64)),
|
||||
SIGNAL(progress(qint64, qint64)));
|
||||
|
@ -192,6 +192,11 @@ bool OneSixInstance::setIntendedVersionId(QString version)
|
||||
{
|
||||
settings().set("IntendedVersion", version);
|
||||
setShouldUpdate(true);
|
||||
auto pathCustom = PathCombine(instanceRoot(), "custom.json");
|
||||
auto pathOrig = PathCombine(instanceRoot(), "version.json");
|
||||
QFile::remove(pathCustom);
|
||||
QFile::remove(pathOrig);
|
||||
reloadFullVersion();
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -271,7 +276,11 @@ bool OneSixInstance::reloadFullVersion()
|
||||
d->version = version;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
else
|
||||
{
|
||||
d->version.reset();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
std::shared_ptr<OneSixVersion> OneSixInstance::getFullVersion()
|
||||
|
@ -10,33 +10,33 @@ class OneSixInstance : public BaseInstance
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit OneSixInstance(const QString &rootDir, SettingsObject * settings, QObject *parent = 0);
|
||||
|
||||
|
||||
explicit OneSixInstance(const QString &rootDir, SettingsObject *settings,
|
||||
QObject *parent = 0);
|
||||
|
||||
////// Mod Lists //////
|
||||
std::shared_ptr<ModList> loaderModList();
|
||||
std::shared_ptr<ModList> resourcePackList();
|
||||
|
||||
|
||||
////// Directories //////
|
||||
QString resourcePacksDir() const;
|
||||
QString loaderModsDir() const;
|
||||
virtual QString instanceConfigFolder() const;
|
||||
|
||||
virtual BaseUpdate* doUpdate();
|
||||
virtual MinecraftProcess* prepareForLaunch ( LoginResponse response );
|
||||
|
||||
virtual BaseUpdate *doUpdate();
|
||||
virtual MinecraftProcess *prepareForLaunch(LoginResponse response);
|
||||
virtual void cleanupAfterRun();
|
||||
|
||||
|
||||
virtual QString intendedVersionId() const;
|
||||
virtual bool setIntendedVersionId ( QString version );
|
||||
|
||||
virtual bool setIntendedVersionId(QString version);
|
||||
|
||||
virtual QString currentVersionId() const;
|
||||
// virtual void setCurrentVersionId ( QString val ) {};
|
||||
|
||||
|
||||
virtual bool shouldUpdate() const;
|
||||
virtual void setShouldUpdate(bool val);
|
||||
|
||||
virtual QDialog * createModEditDialog ( QWidget* parent );
|
||||
|
||||
|
||||
virtual QDialog *createModEditDialog(QWidget *parent);
|
||||
|
||||
/// reload the full version json file. return true on success!
|
||||
bool reloadFullVersion();
|
||||
/// get the current full version info
|
||||
@ -46,13 +46,14 @@ public:
|
||||
/// customize the current base version
|
||||
bool customizeVersion();
|
||||
/// is the current version original, or custom?
|
||||
bool versionIsCustom();
|
||||
|
||||
virtual bool versionIsCustom() override;
|
||||
|
||||
virtual QString defaultBaseJar() const;
|
||||
virtual QString defaultCustomBaseJar() const;
|
||||
|
||||
virtual bool menuActionEnabled ( QString action_name ) const;
|
||||
|
||||
virtual bool menuActionEnabled(QString action_name) const;
|
||||
virtual QString getStatusbarDescription();
|
||||
|
||||
private:
|
||||
QStringList processMinecraftArgs( LoginResponse response );
|
||||
QStringList processMinecraftArgs(LoginResponse response);
|
||||
};
|
Loading…
Reference in New Issue
Block a user