Add builtin Minecraft versions for legacy
This commit is contained in:
		| @@ -620,6 +620,7 @@ set(MULTIMC_QRCS | ||||
| 	resources/backgrounds/backgrounds.qrc | ||||
| 	resources/multimc/multimc.qrc | ||||
| 	resources/instances/instances.qrc | ||||
| 	resources/versions/versions.qrc | ||||
| ) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -22,11 +22,7 @@ import java.io.File; | ||||
| import java.awt.*; | ||||
| import java.io.IOException; | ||||
| import java.lang.reflect.Field; | ||||
| import java.lang.reflect.InvocationTargetException; | ||||
| import java.lang.reflect.Method; | ||||
| import java.net.MalformedURLException; | ||||
| import java.net.URL; | ||||
| import java.net.URLClassLoader; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| @@ -38,6 +34,7 @@ public class OneSixLauncher implements Launcher | ||||
| 	private List<String> mcparams; | ||||
| 	private List<String> mods; | ||||
| 	private List<String> traits; | ||||
| 	private String appletClass; | ||||
| 	private String mainClass; | ||||
| 	private String natives; | ||||
| 	private String userName, sessionId; | ||||
| @@ -57,7 +54,8 @@ public class OneSixLauncher implements Launcher | ||||
| 		libraries = params.all("cp"); | ||||
| 		extlibs = params.all("ext"); | ||||
| 		mcparams = params.all("param"); | ||||
| 		mainClass = params.first("mainClass"); | ||||
| 		mainClass = params.firstSafe("mainClass", "net.minecraft.client.Minecraft"); | ||||
| 		appletClass = params.firstSafe("appletClass", "net.minecraft.client.MinecraftApplet"); | ||||
| 		mods = params.allSafe("mods", new ArrayList<String>()); | ||||
| 		traits = params.allSafe("traits", new ArrayList<String>()); | ||||
| 		natives = params.first("natives"); | ||||
| @@ -134,12 +132,13 @@ public class OneSixLauncher implements Launcher | ||||
|  | ||||
| 			if (f == null) | ||||
| 			{ | ||||
| 				System.err.println("Could not find Minecraft path field. Launch failed."); | ||||
| 				return -1; | ||||
| 				System.err.println("Could not find Minecraft path field."); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				f.setAccessible(true); | ||||
| 				f.set(null, new File(cwd)); | ||||
| 			} | ||||
|  | ||||
| 			f.setAccessible(true); | ||||
| 			f.set(null, new File(cwd)); | ||||
| 		} catch (Exception e) | ||||
| 		{ | ||||
| 			System.err.println("Could not set base folder. Failed to find/access Minecraft main class:"); | ||||
| @@ -156,7 +155,7 @@ public class OneSixLauncher implements Launcher | ||||
| 		Utils.log("Launching with applet wrapper..."); | ||||
| 		try | ||||
| 		{ | ||||
| 			Class<?> MCAppletClass = cl.loadClass("net.minecraft.client.MinecraftApplet"); | ||||
| 			Class<?> MCAppletClass = cl.loadClass(appletClass); | ||||
| 			Applet mcappl = (Applet) MCAppletClass.newInstance(); | ||||
| 			LegacyFrame mcWindow = new LegacyFrame(windowTitle); | ||||
| 			mcWindow.start(mcappl, userName, sessionId, winSize, maximize); | ||||
| @@ -307,7 +306,7 @@ public class OneSixLauncher implements Launcher | ||||
| 		// grab the system classloader and ... | ||||
| 		cl = ClassLoader.getSystemClassLoader(); | ||||
| 		 | ||||
| 		if (traits.contains("legacyLaunch")) | ||||
| 		if (traits.contains("legacyLaunch") || traits.contains("alphaLaunch") ) | ||||
| 		{ | ||||
| 			// legacy launch uses the applet wrapper | ||||
| 			return legacyLaunch(); | ||||
|   | ||||
| @@ -21,44 +21,52 @@ | ||||
|  | ||||
| struct MinecraftVersion : public BaseVersion | ||||
| { | ||||
| 	/*! | ||||
| 	 * Gets the version's timestamp. | ||||
| 	 * This is primarily used for sorting versions in a list. | ||||
| 	 */ | ||||
| 	/// The version's timestamp - this is primarily used for sorting versions in a list. | ||||
| 	qint64 timestamp; | ||||
|  | ||||
| 	/// The URL that this version will be downloaded from. maybe. | ||||
| 	QString download_url; | ||||
|  | ||||
| 	/// extra features enabled for this Minecraft version. Mostly for compatibility | ||||
| 	QSet <QString> features; | ||||
|  | ||||
| 	/// is this the latest version? | ||||
| 	bool is_latest = false; | ||||
|  | ||||
| 	/// is this a snapshot? | ||||
| 	bool is_snapshot = false; | ||||
|  | ||||
| 	/// is this a built-in version that comes with MultiMC? | ||||
| 	bool is_builtin = false; | ||||
| 	 | ||||
| 	/// the human readable version name | ||||
| 	QString m_name; | ||||
|  | ||||
| 	/// the version ID. | ||||
| 	QString m_descriptor; | ||||
|  | ||||
| 	/// version traits. generally launcher business... | ||||
| 	QSet<QString> m_traits; | ||||
|  | ||||
| 	/// The main class this version uses (if any, can be empty). | ||||
| 	QString m_mainClass; | ||||
|  | ||||
| 	/// The applet class this version uses (if any, can be empty). | ||||
| 	QString m_appletClass; | ||||
|  | ||||
| 	bool usesLegacyLauncher() | ||||
| 	{ | ||||
| 		return features.contains("legacy"); | ||||
| 		return m_traits.contains("legacyLaunch") || m_traits.contains("aplhaLaunch"); | ||||
| 	} | ||||
| 	 | ||||
| 	virtual QString descriptor() | ||||
| 	virtual QString descriptor() override | ||||
| 	{ | ||||
| 		return m_descriptor; | ||||
| 	} | ||||
|  | ||||
| 	virtual QString name() | ||||
| 	virtual QString name() override | ||||
| 	{ | ||||
| 		return m_name; | ||||
| 	} | ||||
|  | ||||
| 	virtual QString typeString() const | ||||
| 	virtual QString typeString() const override | ||||
| 	{ | ||||
| 		if (is_latest && is_snapshot) | ||||
| 		{ | ||||
| @@ -70,7 +78,11 @@ struct MinecraftVersion : public BaseVersion | ||||
| 		} | ||||
| 		else if(is_snapshot) | ||||
| 		{ | ||||
| 			return QObject::tr("Old snapshot"); | ||||
| 			return QObject::tr("Snapshot"); | ||||
| 		} | ||||
| 		else if(is_builtin) | ||||
| 		{ | ||||
| 			return QObject::tr("Museum piece"); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
|   | ||||
| @@ -100,6 +100,7 @@ QDir OneSixFTBInstance::librariesPath() const | ||||
| { | ||||
| 	return QDir(MMC->settings()->get("FTBRoot").toString() + "/libraries"); | ||||
| } | ||||
|  | ||||
| QDir OneSixFTBInstance::versionsPath() const | ||||
| { | ||||
| 	return QDir(MMC->settings()->get("FTBRoot").toString() + "/versions"); | ||||
|   | ||||
| @@ -224,6 +224,10 @@ bool OneSixInstance::prepareForLaunch(AuthSessionPtr account, QString &launchScr | ||||
| 		launchScript += "cp " + versionsPath().absoluteFilePath(minecraftjarpath) + "\n"; | ||||
| 	} | ||||
| 	launchScript += "mainClass " + version->mainClass + "\n"; | ||||
| 	if(!version->appletClass.isEmpty()) | ||||
| 	{ | ||||
| 		launchScript += "appletClass " + version->appletClass + "\n"; | ||||
| 	} | ||||
|  | ||||
| 	// generic minecraft params | ||||
| 	for (auto param : processMinecraftArgs(account)) | ||||
|   | ||||
| @@ -163,13 +163,14 @@ VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &fi | ||||
| 	} | ||||
|  | ||||
| 	readString("mainClass", out->mainClass); | ||||
| 	readString("appletClass", out->appletClass); | ||||
| 	readString("processArguments", out->processArguments); | ||||
| 	readString("minecraftArguments", out->overwriteMinecraftArguments); | ||||
| 	readString("+minecraftArguments", out->addMinecraftArguments); | ||||
| 	readString("-minecraftArguments", out->removeMinecraftArguments); | ||||
| 	readString("type", out->type); | ||||
| 	readString("releaseTime", out->releaseTime); | ||||
| 	readString("time", out->time); | ||||
| 	readString("releaseTime", out->versionReleaseTime); | ||||
| 	readString("time", out->versionFileUpdateTime); | ||||
| 	readString("assets", out->assets); | ||||
|  | ||||
| 	if (root.contains("minimumLauncherVersion")) | ||||
| @@ -404,6 +405,10 @@ void VersionFile::applyTo(VersionFinal *version) | ||||
| 	{ | ||||
| 		version->mainClass = mainClass; | ||||
| 	} | ||||
| 	if (!appletClass.isNull()) | ||||
| 	{ | ||||
| 		version->appletClass = appletClass; | ||||
| 	} | ||||
| 	if (!processArguments.isNull()) | ||||
| 	{ | ||||
| 		if(isVanilla()) | ||||
| @@ -416,13 +421,13 @@ void VersionFile::applyTo(VersionFinal *version) | ||||
| 	{ | ||||
| 		version->type = type; | ||||
| 	} | ||||
| 	if (!releaseTime.isNull()) | ||||
| 	if (!versionReleaseTime.isNull()) | ||||
| 	{ | ||||
| 		version->releaseTime = releaseTime; | ||||
| 		version->versionReleaseTime = versionReleaseTime; | ||||
| 	} | ||||
| 	if (!time.isNull()) | ||||
| 	if (!versionFileUpdateTime.isNull()) | ||||
| 	{ | ||||
| 		version->time = time; | ||||
| 		version->time = versionFileUpdateTime; | ||||
| 	} | ||||
| 	if (!assets.isNull()) | ||||
| 	{ | ||||
|   | ||||
| @@ -118,13 +118,14 @@ public: /* data */ | ||||
| 	// QMap<QString, QString> requirements; | ||||
| 	QString id; | ||||
| 	QString mainClass; | ||||
| 	QString appletClass; | ||||
| 	QString overwriteMinecraftArguments; | ||||
| 	QString addMinecraftArguments; | ||||
| 	QString removeMinecraftArguments; | ||||
| 	QString processArguments; | ||||
| 	QString type; | ||||
| 	QString releaseTime; | ||||
| 	QString time; | ||||
| 	QString versionReleaseTime; | ||||
| 	QString versionFileUpdateTime; | ||||
| 	QString assets; | ||||
| 	int minimumLauncherVersion = -1; | ||||
|  | ||||
|   | ||||
| @@ -42,13 +42,14 @@ void VersionFinal::clear() | ||||
| { | ||||
| 	id.clear(); | ||||
| 	time.clear(); | ||||
| 	releaseTime.clear(); | ||||
| 	versionReleaseTime.clear(); | ||||
| 	type.clear(); | ||||
| 	assets.clear(); | ||||
| 	processArguments.clear(); | ||||
| 	minecraftArguments.clear(); | ||||
| 	minimumLauncherVersion = 0xDEADBEAF; | ||||
| 	mainClass.clear(); | ||||
| 	appletClass.clear(); | ||||
| 	libraries.clear(); | ||||
| 	tweakers.clear(); | ||||
| 	jarMods.clear(); | ||||
| @@ -426,10 +427,5 @@ void VersionFinal::finalize() | ||||
| 	}; | ||||
| 	finalizeArguments(vanillaMinecraftArguments, vanillaProcessArguments); | ||||
| 	finalizeArguments(minecraftArguments, processArguments); | ||||
| 	// use legacy launch for this version if the version id is legacy | ||||
| 	if(g_VersionFilterData.legacyLaunchWhitelist.contains(id)) | ||||
| 	{ | ||||
| 		traits.insert("legacyLaunch"); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -91,7 +91,7 @@ public: | ||||
| 	/// Last updated time - as a string | ||||
| 	QString time; | ||||
| 	/// Release time - as a string | ||||
| 	QString releaseTime; | ||||
| 	QString versionReleaseTime; | ||||
| 	/// Release type - "release" or "snapshot" | ||||
| 	QString type; | ||||
| 	/// Assets type - "legacy" or a version ID | ||||
| @@ -125,7 +125,11 @@ public: | ||||
| 	 * The main class to load first | ||||
| 	 */ | ||||
| 	QString mainClass; | ||||
|  | ||||
| 	/** | ||||
| 	 * The applet class, for some very old minecraft releases | ||||
| 	 */ | ||||
| 	QString appletClass; | ||||
| 	 | ||||
| 	/// the list of libs - both active and inactive, native and java | ||||
| 	QList<std::shared_ptr<OneSixLibrary>> libraries; | ||||
| 	 | ||||
|   | ||||
| @@ -16,6 +16,7 @@ | ||||
| #include "MinecraftVersionList.h" | ||||
| #include "MultiMC.h" | ||||
| #include "logic/net/URLConstants.h" | ||||
| #include <logic/MMCJson.h> | ||||
|  | ||||
| #include <QtXml> | ||||
|  | ||||
| @@ -29,8 +30,14 @@ | ||||
|  | ||||
| #include <QtNetwork> | ||||
|  | ||||
| inline QDateTime timeFromS3Time(QString str) | ||||
| { | ||||
| 	return QDateTime::fromString(str, Qt::ISODate); | ||||
| } | ||||
|  | ||||
| MinecraftVersionList::MinecraftVersionList(QObject *parent) : BaseVersionList(parent) | ||||
| { | ||||
| 	loadBuiltinList(); | ||||
| } | ||||
|  | ||||
| Task *MinecraftVersionList::getLoadTask() | ||||
| @@ -65,6 +72,66 @@ void MinecraftVersionList::sortInternal() | ||||
| 	qSort(m_vlist.begin(), m_vlist.end(), cmpVersions); | ||||
| } | ||||
|  | ||||
| void MinecraftVersionList::loadBuiltinList() | ||||
| { | ||||
| 	// grab the version list data from internal resources. | ||||
| 	QResource versionList(":/versions/minecraft.json"); | ||||
| 	QFile filez(versionList.absoluteFilePath()); | ||||
| 	filez.open(QIODevice::ReadOnly); | ||||
| 	auto data = filez.readAll(); | ||||
| 	 | ||||
| 	// parse the data as json | ||||
| 	QJsonParseError jsonError; | ||||
| 	QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &jsonError); | ||||
| 	QJsonObject root = jsonDoc.object(); | ||||
| 	 | ||||
| 	// parse all the versions | ||||
| 	for (const auto version : MMCJson::ensureArray(root.value("versions"))) | ||||
| 	{ | ||||
| 		QJsonObject versionObj = version.toObject(); | ||||
| 		QString versionID = versionObj.value("id").toString(""); | ||||
| 		QString versionTimeStr = versionObj.value("releaseTime").toString(""); | ||||
| 		QString versionTypeStr = versionObj.value("type").toString(""); | ||||
| 		QSet<QString> traits; | ||||
| 		if (versionObj.contains("+traits")) | ||||
| 		{ | ||||
| 			for (auto traitVal : MMCJson::ensureArray(versionObj.value("+traits"))) | ||||
| 			{ | ||||
| 				traits.insert(MMCJson::ensureString(traitVal)); | ||||
| 			} | ||||
| 		} | ||||
| 		if (versionID.isEmpty() || versionTimeStr.isEmpty() || versionTypeStr.isEmpty()) | ||||
| 		{ | ||||
| 			// FIXME: log this somewhere | ||||
| 			continue; | ||||
| 		} | ||||
| 		// Parse the timestamp. | ||||
| 		QDateTime versionTime = timeFromS3Time(versionTimeStr); | ||||
| 		if (!versionTime.isValid()) | ||||
| 		{ | ||||
| 			// FIXME: log this somewhere | ||||
| 			continue; | ||||
| 		} | ||||
| 		// Get the download URL. | ||||
| 		QString dlUrl = "http://" + URLConstants::AWS_DOWNLOAD_VERSIONS + versionID + "/"; | ||||
|  | ||||
| 		// main class and applet class | ||||
| 		QString mainClass = versionObj.value("type").toString(""); | ||||
| 		QString appletClass = versionObj.value("type").toString(""); | ||||
|  | ||||
| 		// Now, we construct the version object and add it to the list. | ||||
| 		std::shared_ptr<MinecraftVersion> mcVersion(new MinecraftVersion()); | ||||
| 		mcVersion->m_name = mcVersion->m_descriptor = versionID; | ||||
| 		mcVersion->timestamp = versionTime.toMSecsSinceEpoch(); | ||||
| 		mcVersion->download_url = dlUrl; | ||||
| 		mcVersion->is_builtin = true; | ||||
| 		mcVersion->m_appletClass = appletClass; | ||||
| 		mcVersion->m_mainClass = mainClass; | ||||
| 		mcVersion->m_traits = traits; | ||||
| 		m_vlist.append(mcVersion); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void MinecraftVersionList::sort() | ||||
| { | ||||
| 	beginResetModel(); | ||||
| @@ -88,7 +155,21 @@ BaseVersionPtr MinecraftVersionList::getLatestStable() const | ||||
| void MinecraftVersionList::updateListData(QList<BaseVersionPtr> versions) | ||||
| { | ||||
| 	beginResetModel(); | ||||
| 	m_vlist = versions; | ||||
| 	for (auto version : versions) | ||||
| 	{ | ||||
| 		auto descr = version->descriptor(); | ||||
| 		for (auto builtin_v : m_vlist) | ||||
| 		{ | ||||
| 			if (descr == builtin_v->descriptor()) | ||||
| 			{ | ||||
| 				goto SKIP_THIS_ONE; | ||||
| 			} | ||||
| 		} | ||||
| 		m_vlist.append(version); | ||||
| 	SKIP_THIS_ONE: | ||||
| 	{ | ||||
| 	} | ||||
| 	} | ||||
| 	m_loaded = true; | ||||
| 	sortInternal(); | ||||
| 	endResetModel(); | ||||
| @@ -103,11 +184,6 @@ inline QDomElement getDomElementByTagName(QDomElement parent, QString tagname) | ||||
| 		return QDomElement(); | ||||
| } | ||||
|  | ||||
| inline QDateTime timeFromS3Time(QString str) | ||||
| { | ||||
| 	return QDateTime::fromString(str, Qt::ISODate); | ||||
| } | ||||
|  | ||||
| MCVListLoadTask::MCVListLoadTask(MinecraftVersionList *vlist) | ||||
| { | ||||
| 	m_list = vlist; | ||||
| @@ -123,7 +199,8 @@ void MCVListLoadTask::executeTask() | ||||
| { | ||||
| 	setStatus(tr("Loading instance version list...")); | ||||
| 	auto worker = MMC->qnam(); | ||||
| 	vlistReply = worker->get(QNetworkRequest(QUrl("http://" + URLConstants::AWS_DOWNLOAD_VERSIONS + "versions.json"))); | ||||
| 	vlistReply = worker->get(QNetworkRequest( | ||||
| 		QUrl("http://" + URLConstants::AWS_DOWNLOAD_VERSIONS + "versions.json"))); | ||||
| 	connect(vlistReply, SIGNAL(finished()), this, SLOT(list_downloaded())); | ||||
| } | ||||
|  | ||||
| @@ -136,8 +213,10 @@ void MCVListLoadTask::list_downloaded() | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	auto foo = vlistReply->readAll(); | ||||
| 	QJsonParseError jsonError; | ||||
| 	QJsonDocument jsonDoc = QJsonDocument::fromJson(vlistReply->readAll(), &jsonError); | ||||
| 	QLOG_INFO() << foo; | ||||
| 	QJsonDocument jsonDoc = QJsonDocument::fromJson(foo, &jsonError); | ||||
| 	vlistReply->deleteLater(); | ||||
|  | ||||
| 	if (jsonError.error != QJsonParseError::NoError) | ||||
| @@ -154,26 +233,18 @@ void MCVListLoadTask::list_downloaded() | ||||
|  | ||||
| 	QJsonObject root = jsonDoc.object(); | ||||
|  | ||||
| 	// Get the ID of the latest release and the latest snapshot. | ||||
| 	if (!root.value("latest").isObject()) | ||||
| 	QString latestReleaseID = "INVALID"; | ||||
| 	QString latestSnapshotID = "INVALID"; | ||||
| 	try | ||||
| 	{ | ||||
| 		emitFailed("Error parsing version list JSON: version list is missing 'latest' object"); | ||||
| 		return; | ||||
| 		QJsonObject latest = MMCJson::ensureObject(root.value("latest")); | ||||
| 		latestReleaseID = MMCJson::ensureString(latest.value("release")); | ||||
| 		latestSnapshotID = MMCJson::ensureString(latest.value("snapshot")); | ||||
| 	} | ||||
|  | ||||
| 	QJsonObject latest = root.value("latest").toObject(); | ||||
|  | ||||
| 	QString latestReleaseID = latest.value("release").toString(""); | ||||
| 	QString latestSnapshotID = latest.value("snapshot").toString(""); | ||||
| 	if (latestReleaseID.isEmpty()) | ||||
| 	catch (MMCError &err) | ||||
| 	{ | ||||
| 		emitFailed("Error parsing version list JSON: latest release field is missing"); | ||||
| 		return; | ||||
| 	} | ||||
| 	if (latestSnapshotID.isEmpty()) | ||||
| 	{ | ||||
| 		emitFailed("Error parsing version list JSON: latest snapshot field is missing"); | ||||
| 		return; | ||||
| 		QLOG_ERROR() | ||||
| 			<< tr("Error parsing version list JSON: couldn't determine latest versions"); | ||||
| 	} | ||||
|  | ||||
| 	// Now, get the array of versions. | ||||
| @@ -186,22 +257,21 @@ void MCVListLoadTask::list_downloaded() | ||||
| 	QJsonArray versions = root.value("versions").toArray(); | ||||
|  | ||||
| 	QList<BaseVersionPtr> tempList; | ||||
| 	for (int i = 0; i < versions.count(); i++) | ||||
| 	for (auto version : versions) | ||||
| 	{ | ||||
| 		bool is_snapshot = false; | ||||
| 		bool is_latest = false; | ||||
| 		bool legacyLaunch = false; | ||||
|  | ||||
| 		// Load the version info. | ||||
| 		if (!versions[i].isObject()) | ||||
| 		if (!version.isObject()) | ||||
| 		{ | ||||
| 			// FIXME: log this somewhere | ||||
| 			continue; | ||||
| 		} | ||||
| 		QJsonObject version = versions[i].toObject(); | ||||
| 		QString versionID = version.value("id").toString(""); | ||||
| 		QString versionTimeStr = version.value("releaseTime").toString(""); | ||||
| 		QString versionTypeStr = version.value("type").toString(""); | ||||
| 		QJsonObject versionObj = version.toObject(); | ||||
| 		QString versionID = versionObj.value("id").toString(""); | ||||
| 		QString versionTimeStr = versionObj.value("releaseTime").toString(""); | ||||
| 		QString versionTypeStr = versionObj.value("type").toString(""); | ||||
| 		if (versionID.isEmpty() || versionTimeStr.isEmpty() || versionTypeStr.isEmpty()) | ||||
| 		{ | ||||
| 			// FIXME: log this somewhere | ||||
| @@ -251,8 +321,6 @@ void MCVListLoadTask::list_downloaded() | ||||
| 		mcVersion->download_url = dlUrl; | ||||
| 		mcVersion->is_latest = is_latest; | ||||
| 		mcVersion->is_snapshot = is_snapshot; | ||||
| 		if(legacyLaunch) | ||||
| 			mcVersion->features.insert("legacy"); | ||||
| 		tempList.append(mcVersion); | ||||
| 	} | ||||
| 	m_list->updateListData(tempList); | ||||
|   | ||||
| @@ -31,6 +31,7 @@ class MinecraftVersionList : public BaseVersionList | ||||
| 	Q_OBJECT | ||||
| private: | ||||
| 	void sortInternal(); | ||||
| 	void loadBuiltinList(); | ||||
| public: | ||||
| 	friend class MCVListLoadTask; | ||||
|  | ||||
|   | ||||
							
								
								
									
										1
									
								
								main.cpp
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								main.cpp
									
									
									
									
									
								
							| @@ -28,6 +28,7 @@ int main(int argc, char *argv[]) | ||||
| 	Q_INIT_RESOURCE(instances); | ||||
| 	Q_INIT_RESOURCE(multimc); | ||||
| 	Q_INIT_RESOURCE(backgrounds); | ||||
| 	Q_INIT_RESOURCE(versions); | ||||
|  | ||||
| #ifdef HANDLE_SEGV | ||||
| 	// Register signal handler for generating crash reports. | ||||
|   | ||||
							
								
								
									
										45
									
								
								resources/versions/LWJGL/2.9.0.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								resources/versions/LWJGL/2.9.0.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
|  { | ||||
| 	"fileId": "org.lwjgl", | ||||
| 	"name": "LWJGL", | ||||
| 	"version": "2.9.0", | ||||
| 	"libraries": [ | ||||
| 		{ | ||||
| 			"name": "net.java.jinput:jinput:2.0.5" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "net.java.jinput:jinput-platform:2.0.5", | ||||
| 			"natives": { | ||||
| 				"linux": "natives-linux", | ||||
| 				"windows": "natives-windows", | ||||
| 				"osx": "natives-osx" | ||||
| 			}, | ||||
| 			"extract": { | ||||
| 				"exclude": [ | ||||
| 					"META-INF/" | ||||
| 				] | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "net.java.jutils:jutils:1.0.0" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl:2.9.0" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.0" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0", | ||||
| 			"natives": { | ||||
| 				"linux": "natives-linux", | ||||
| 				"windows": "natives-windows", | ||||
| 				"osx": "natives-osx" | ||||
| 			}, | ||||
| 			"extract": { | ||||
| 				"exclude": [ | ||||
| 					"META-INF/" | ||||
| 				] | ||||
| 			} | ||||
| 		} | ||||
| 	] | ||||
| } | ||||
							
								
								
									
										45
									
								
								resources/versions/LWJGL/2.9.1-nightly-20130708-debug3.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								resources/versions/LWJGL/2.9.1-nightly-20130708-debug3.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
| { | ||||
| 	"fileId": "org.lwjgl", | ||||
| 	"name": "LWJGL", | ||||
| 	"version": "2.9.1-nightly-20130708-debug3", | ||||
| 	"libraries": [ | ||||
| 		{ | ||||
| 			"name": "net.java.jinput:jinput:2.0.5" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "net.java.jinput:jinput-platform:2.0.5", | ||||
| 			"natives": { | ||||
| 				"linux": "natives-linux", | ||||
| 				"windows": "natives-windows", | ||||
| 				"osx": "natives-osx" | ||||
| 			}, | ||||
| 			"extract": { | ||||
| 				"exclude": [ | ||||
| 					"META-INF/" | ||||
| 				] | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "net.java.jutils:jutils:1.0.0" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl:2.9.1-nightly-20130708-debug3" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.1-nightly-20130708-debug3" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1-nightly-20130708-debug3", | ||||
| 			"natives": { | ||||
| 				"linux": "natives-linux", | ||||
| 				"windows": "natives-windows", | ||||
| 				"osx": "natives-osx" | ||||
| 			}, | ||||
| 			"extract": { | ||||
| 				"exclude": [ | ||||
| 					"META-INF/" | ||||
| 				] | ||||
| 			} | ||||
| 		} | ||||
| 	] | ||||
| } | ||||
							
								
								
									
										45
									
								
								resources/versions/LWJGL/2.9.1.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								resources/versions/LWJGL/2.9.1.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,45 @@ | ||||
|  { | ||||
| 	"fileId": "org.lwjgl", | ||||
| 	"name": "LWJGL", | ||||
| 	"version": "2.9.1", | ||||
| 	"libraries": [ | ||||
| 		{ | ||||
| 			"name": "net.java.jinput:jinput:2.0.5" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "net.java.jinput:jinput-platform:2.0.5", | ||||
| 			"natives": { | ||||
| 				"linux": "natives-linux", | ||||
| 				"windows": "natives-windows", | ||||
| 				"osx": "natives-osx" | ||||
| 			}, | ||||
| 			"extract": { | ||||
| 				"exclude": [ | ||||
| 					"META-INF/" | ||||
| 				] | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "net.java.jutils:jutils:1.0.0" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl:2.9.1" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl_util:2.9.1" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.1", | ||||
| 			"natives": { | ||||
| 				"linux": "natives-linux", | ||||
| 				"windows": "natives-windows", | ||||
| 				"osx": "natives-osx" | ||||
| 			}, | ||||
| 			"extract": { | ||||
| 				"exclude": [ | ||||
| 					"META-INF/" | ||||
| 				] | ||||
| 			} | ||||
| 		} | ||||
| 	] | ||||
| } | ||||
							
								
								
									
										571
									
								
								resources/versions/minecraft.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										571
									
								
								resources/versions/minecraft.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,571 @@ | ||||
| {  | ||||
| "versions": [ | ||||
| 	{ | ||||
| 		"id": "1.5.2", | ||||
| 		"releaseTime": "2013-04-25T17:45:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.5.1", | ||||
| 		"releaseTime": "2013-03-20T12:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.5", | ||||
| 		"releaseTime": "2013-03-07T00:00:00+02:00", | ||||
| 		"type": "snapshot", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4.7", | ||||
| 		"releaseTime": "2012-12-28T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4.6", | ||||
| 		"releaseTime": "2012-12-20T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4.5", | ||||
| 		"releaseTime": "2012-12-20T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4.4", | ||||
| 		"releaseTime": "2012-12-14T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4.3", | ||||
| 		"releaseTime": "2012-12-01T00:00:00+02:00", | ||||
| 		"type": "snapshot", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4.2", | ||||
| 		"releaseTime": "2012-11-25T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4.1", | ||||
| 		"releaseTime": "2012-11-23T00:00:00+02:00", | ||||
| 		"type": "snapshot", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.4", | ||||
| 		"releaseTime": "2012-11-19T00:00:00+02:00", | ||||
| 		"type": "snapshot", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.3.2", | ||||
| 		"releaseTime": "2012-08-16T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.3.1", | ||||
| 		"releaseTime": "2012-08-01T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.3", | ||||
| 		"releaseTime": "2012-07-26T00:00:00+02:00", | ||||
| 		"type": "snapshot", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.2.5", | ||||
| 		"releaseTime": "2012-03-30T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.2.4", | ||||
| 		"releaseTime": "2012-03-22T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.2.3", | ||||
| 		"releaseTime": "2012-03-02T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.2.2", | ||||
| 		"releaseTime": "2012-03-01T00:00:01+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.2.1", | ||||
| 		"releaseTime": "2012-03-01T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.1", | ||||
| 		"releaseTime": "2012-01-12T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "1.0", | ||||
| 		"releaseTime": "2011-11-18T00:00:00+02:00", | ||||
| 		"type": "release", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.8.1", | ||||
| 		"releaseTime": "2011-09-19T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.8", | ||||
| 		"releaseTime": "2011-09-15T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.7.3", | ||||
| 		"releaseTime": "2011-07-08T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.7.2", | ||||
| 		"releaseTime": "2011-07-01T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.7", | ||||
| 		"releaseTime": "2011-06-30T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.6.6", | ||||
| 		"releaseTime": "2011-05-31T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.6.5", | ||||
| 		"releaseTime": "2011-05-28T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.6.4", | ||||
| 		"releaseTime": "2011-05-26T00:00:04+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.6.3", | ||||
| 		"releaseTime": "2011-05-26T00:00:03+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.6.2", | ||||
| 		"releaseTime": "2011-05-26T00:00:02+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.6.1", | ||||
| 		"releaseTime": "2011-05-26T00:00:01+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.6", | ||||
| 		"releaseTime": "2011-05-26T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.5_01", | ||||
| 		"releaseTime": "2011-04-20T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.5", | ||||
| 		"releaseTime": "2011-04-19T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.4_01", | ||||
| 		"releaseTime": "2011-04-05T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.4", | ||||
| 		"releaseTime": "2011-03-31T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.3_01", | ||||
| 		"releaseTime": "2011-02-23T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.3b", | ||||
| 		"releaseTime": "2011-02-22T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.2_02", | ||||
| 		"releaseTime": "2011-01-21T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.2_01", | ||||
| 		"releaseTime": "2011-01-14T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.2", | ||||
| 		"releaseTime": "2011-01-13T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.1_02", | ||||
| 		"releaseTime": "2010-12-22T00:00:01+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.1_01", | ||||
| 		"releaseTime": "2010-12-22T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.0.2", | ||||
| 		"releaseTime": "2010-12-21T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.0_01", | ||||
| 		"releaseTime": "2010-12-20T00:00:01+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "b1.0", | ||||
| 		"releaseTime": "2010-12-20T00:00:00+02:00", | ||||
| 		"type": "old_beta", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.6", | ||||
| 		"releaseTime": "2010-12-03T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.5", | ||||
| 		"releaseTime": "2010-12-01T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.4_01", | ||||
| 		"releaseTime": "2010-11-30T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.3_04", | ||||
| 		"releaseTime": "2010-11-26T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.3_02", | ||||
| 		"releaseTime": "2010-11-25T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.3_01", | ||||
| 		"releaseTime": "2010-11-24T00:00:01+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.3", | ||||
| 		"releaseTime": "2010-11-24T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.2b", | ||||
| 		"releaseTime": "2010-11-10T00:00:01+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.2a", | ||||
| 		"releaseTime": "2010-11-10T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.1_01", | ||||
| 		"releaseTime": "2010-11-05T00:00:01+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.1", | ||||
| 		"releaseTime": "2010-11-05T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.0_02", | ||||
| 		"releaseTime": "2010-11-04T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.0_01", | ||||
| 		"releaseTime": "2010-10-31T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.2.0", | ||||
| 		"releaseTime": "2010-10-30T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.1.2_01", | ||||
| 		"releaseTime": "2010-09-23T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.1.2", | ||||
| 		"releaseTime": "2010-09-20T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.1.0", | ||||
| 		"releaseTime": "2010-09-13T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.17_04", | ||||
| 		"releaseTime": "2010-08-23T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.17_02", | ||||
| 		"releaseTime": "2010-08-20T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.16", | ||||
| 		"releaseTime": "2010-08-12T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.15", | ||||
| 		"releaseTime": "2010-08-04T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.14", | ||||
| 		"releaseTime": "2010-07-30T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.11", | ||||
| 		"releaseTime": "2010-07-23T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.5_01", | ||||
| 		"releaseTime": "2010-07-13T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "a1.0.4", | ||||
| 		"releaseTime": "2010-07-09T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "inf-20100618", | ||||
| 		"releaseTime": "2010-06-16T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "c0.30_01c", | ||||
| 		"releaseTime": "2009-12-22T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "c0.0.13a_03", | ||||
| 		"releaseTime": "2009-05-22T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "c0.0.13a", | ||||
| 		"releaseTime": "2009-05-31T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "c0.0.11a", | ||||
| 		"releaseTime": "2009-05-17T00:00:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"+traits": ["legacyLaunch"] | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "rd-161348", | ||||
| 		"releaseTime": "2009-05-16T13:48:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"mainClass": "com.mojang.minecraft.RubyDung" | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "rd-160052", | ||||
| 		"releaseTime": "2009-05-16T00:52:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"mainClass": "com.mojang.rubydung.RubyDung" | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "rd-132328", | ||||
| 		"releaseTime": "2009-05-13T23:28:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"mainClass": "com.mojang.rubydung.RubyDung" | ||||
| 	}, | ||||
| 	{ | ||||
| 		"id": "rd-132211", | ||||
| 		"releaseTime": "2009-05-13T22:11:00+02:00", | ||||
| 		"type": "old_alpha", | ||||
| 		"processArguments": "legacy", | ||||
| 		"mainClass": "com.mojang.rubydung.RubyDung" | ||||
| 	} | ||||
| ] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.0", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2011-11-18T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.1", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-01-12T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.2.1", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-03-01T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.2.2", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-03-01T00:00:01+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.2.3", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-03-02T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.2.4", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-03-22T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.2.5", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-03-30T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.3.1", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-08-01T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.3.2", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-08-16T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,8 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.3", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-07-26T00:00:00+02:00", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4.1", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-11-23T00:00:00+02:00", | ||||
| 	"type": "snapshot", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4.2", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-11-25T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4.3", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-12-01T00:00:00+02:00", | ||||
| 	"type": "snapshot", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4.4", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-12-14T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4.5", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-12-20T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4.6", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-12-20T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4.7", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-12-28T00:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.4", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2012-11-19T00:00:00+02:00", | ||||
| 	"type": "snapshot", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.5.1", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2013-03-20T12:00:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.5.2", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2013-04-25T17:45:00+02:00", | ||||
| 	"type": "release", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| { | ||||
| 	"id": "1.5", | ||||
| 	"time": "2013-08-06T13:00:00+02:00", | ||||
| 	"releaseTime": "2013-03-07T00:00:00+02:00", | ||||
| 	"type": "snapshot", | ||||
| 	"processArguments": "legacy", | ||||
| 	"mainClass": "net.minecraft.client.Minecraft", | ||||
| 	"+traits": ["legacyLaunch"] | ||||
| } | ||||
							
								
								
									
										11
									
								
								resources/versions/versions.qrc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								resources/versions/versions.qrc
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| <!DOCTYPE RCC> | ||||
| <RCC version="1.0"> | ||||
|     <qresource prefix="/versions"> | ||||
| 		<!-- builtin legacy versions --> | ||||
| 		<file>minecraft.json</file> | ||||
| 		<!-- LWJGL --> | ||||
| 		<file>LWJGL/2.9.0.json</file> | ||||
| 		<file>LWJGL/2.9.1-nightly-20130708-debug3.json</file> | ||||
| 		<file>LWJGL/2.9.1.json</file> | ||||
|     </qresource> | ||||
| </RCC> | ||||
		Reference in New Issue
	
	Block a user