using Range = SemanticVersioning.Range; using Version = SemanticVersioning.Version; namespace SPTarkov.Server.Core.Models.Spt.Mod; /// /// Represents a collection of metadata used to determine things such as author, version, /// pre-defined load order and incompatibilities. This record is required to be overridden by all mods. /// All properties must be overridden. For properties, that you don't need, just assign null. /// public abstract record AbstractModMetadata { /// /// A Global Unique ID (GUID) to distinguish this mod from all others. ///
/// It is recommended (but not mandatory) to use /// reverse domain name notation. ///
public abstract string ModGuid { get; init; } /// /// Name of this mod /// public abstract string Name { get; init; } /// /// Your username /// public abstract string Author { get; init; } /// /// People who have contributed to this mod /// public abstract List? Contributors { get; init; } /// /// Semantic version of this mod, this uses the semver standard: https://semver.org/ ///

/// Version = new Version("1.0.0"); is valid ///
/// Version = new Version("1.0.0.0"); is not ///
public abstract Version Version { get; init; } /// /// SPT version this mod was built for, this uses the semver standard constraints: https://semver.org/ ///

/// Version = new Version("~4.0.0"); is valid ///
/// Version = new Version("4.0.0.0"); is not ///
public abstract Range SptVersion { get; init; } /// /// List of mods not compatible with this mod /// public abstract List? Incompatibilities { get; init; } /// /// Dictionary of mods this mod depends on. /// /// Mod dependency is the key, version is the value /// public abstract Dictionary? ModDependencies { get; init; } /// /// Link to this mod's mod page, or GitHub page /// public abstract string? Url { get; init; } /// /// Does this mod load bundles /// public abstract bool? IsBundleMod { get; init; } /// /// Name of the license this mod uses /// public abstract string License { get; init; } }