diff options
Diffstat (limited to 'launcher/minecraft/VersionFile.h')
-rw-r--r-- | launcher/minecraft/VersionFile.h | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/launcher/minecraft/VersionFile.h b/launcher/minecraft/VersionFile.h new file mode 100644 index 00000000..b79fcd4f --- /dev/null +++ b/launcher/minecraft/VersionFile.h @@ -0,0 +1,114 @@ +#pragma once + +#include <QString> +#include <QStringList> +#include <QDateTime> +#include <QSet> + +#include <memory> +#include "minecraft/OpSys.h" +#include "minecraft/Rule.h" +#include "ProblemProvider.h" +#include "Library.h" +#include <meta/JsonFormat.h> + +class PackProfile; +class VersionFile; +class LaunchProfile; +struct MojangDownloadInfo; +struct MojangAssetIndexInfo; + +using VersionFilePtr = std::shared_ptr<VersionFile>; +class VersionFile : public ProblemContainer +{ + friend class MojangVersionFormat; + friend class OneSixVersionFormat; +public: /* methods */ + void applyTo(LaunchProfile* profile); + +public: /* data */ + /// MultiMC: order hint for this version file if no explicit order is set + int order = 0; + + /// MultiMC: human readable name of this package + QString name; + + /// MultiMC: package ID of this package + QString uid; + + /// MultiMC: version of this package + QString version; + + /// MultiMC: DEPRECATED dependency on a Minecraft version + QString dependsOnMinecraftVersion; + + /// Mojang: DEPRECATED used to version the Mojang version format + int minimumLauncherVersion = -1; + + /// Mojang: DEPRECATED version of Minecraft this is + QString minecraftVersion; + + /// Mojang: class to launch Minecraft with + QString mainClass; + + /// MultiMC: class to launch legacy Minecraft with (embed in a custom window) + QString appletClass; + + /// Mojang: Minecraft launch arguments (may contain placeholders for variable substitution) + QString minecraftArguments; + + /// Mojang: type of the Minecraft version + QString type; + + /// Mojang: the time this version was actually released by Mojang + QDateTime releaseTime; + + /// Mojang: DEPRECATED the time this version was last updated by Mojang + QDateTime updateTime; + + /// Mojang: DEPRECATED asset group to be used with Minecraft + QString assets; + + /// MultiMC: list of tweaker mod arguments for launchwrapper + QStringList addTweakers; + + /// Mojang: list of libraries to add to the version + QList<LibraryPtr> libraries; + + /// MultiMC: list of maven files to put in the libraries folder, but not in classpath + QList<LibraryPtr> mavenFiles; + + /// The main jar (Minecraft version library, normally) + LibraryPtr mainJar; + + /// MultiMC: list of attached traits of this version file - used to enable features + QSet<QString> traits; + + /// MultiMC: list of jar mods added to this version + QList<LibraryPtr> jarMods; + + /// MultiMC: list of mods added to this version + QList<LibraryPtr> mods; + + /** + * MultiMC: set of packages this depends on + * NOTE: this is shared with the meta format!!! + */ + Meta::RequireSet requires; + + /** + * MultiMC: set of packages this conflicts with + * NOTE: this is shared with the meta format!!! + */ + Meta::RequireSet conflicts; + + /// is volatile -- may be removed as soon as it is no longer needed by something else + bool m_volatile = false; + +public: + // Mojang: DEPRECATED list of 'downloads' - client jar, server jar, windows server exe, maybe more. + QMap <QString, std::shared_ptr<MojangDownloadInfo>> mojangDownloads; + + // Mojang: extended asset index download information + std::shared_ptr<MojangAssetIndexInfo> mojangAssetIndex; +}; |