#pragma once #include #include #include #include #include #include #include "logic/minecraft/OneSixRule.h" #include "logic/minecraft/OpSys.h" #include "GradleSpecifier.h" #include "logic/net/URLConstants.h" class RawLibrary; typedef std::shared_ptr RawLibraryPtr; class RawLibrary { public: /* methods */ /// read and create a basic library static RawLibraryPtr fromJson(const QJsonObject &libObj, const QString &filename); /// read and create a MultiMC '+' library. Those have some extra fields. static RawLibraryPtr fromJsonPlus(const QJsonObject &libObj, const QString &filename); QJsonObject toJson(); QString fullname(); public: /* data */ GradleSpecifier m_name; QString m_base_url; /// type hint - modifies how the library is treated QString m_hint; /// DEPRECATED: absolute URL. takes precedence over m_download_path, if defined QString m_absolute_url; bool applyExcludes = false; QStringList extract_excludes; /// Returns true if the library is native bool isNative() const; /// native suffixes per OS QMap m_native_classifiers; bool applyRules = false; QList> m_rules; // used for '+' libraries enum InsertType { Apply, Append, Prepend, Replace } insertType = Append; QString insertData; // soft or hard dependency? hard means 'needs equal', soft means 'needs equal or newer' enum DependType { Soft, Hard } dependType = Soft; };