using System.Linq; // ReSharper disable CollectionNeverUpdated.Global namespace Млаумчерб.Клиент.классы; public class GameVersionDescriptor { [JsonRequired] public string id { get; set; } = ""; [JsonRequired] public DateTime time { get; set; } [JsonRequired] public DateTime releaseTime { get; set; } [JsonRequired] public string type { get; set; } = ""; [JsonRequired] public string mainClass { get; set; } = ""; [JsonRequired] public Downloads downloads { get; set; } = null!; [JsonRequired] public JavaVersion javaVersion { get; set; } = null!; [JsonRequired] public List libraries { get; set; } = null!; [JsonRequired] public AssetIndexProperties assetIndex { get; set; } = null!; [JsonRequired] public string assets { get; set; } = ""; public string? minecraftArguments { get; set; } public ArgumentsNew? arguments { get; set; } } public class Artifact { [JsonRequired] public string url { get; set; } = ""; [JsonRequired] public string sha1 { get; set; } = ""; [JsonRequired] public int size { get; set; } } public class Os { public string? name { get; set; } public string? arch { get; set; } } public class Rule { [JsonRequired] public string action { get; set; } = ""; public Os? os { get; set; } public Dictionary? features { get; set; } } public class LibraryDownloads { public Artifact? artifact { get; set; } public Dictionary? classifiers { get; set; } } public class Extract { public List? exclude { get; set; } } public class Natives { public string? linux { get; set; } public string? osx { get; set; } public string? windows { get; set; } } public class Library { [JsonRequired] public string name { get; set; } = ""; public List? rules { get; set; } public Natives? natives { get; set; } public Extract? extract { get; set; } [JsonRequired] public LibraryDownloads downloads { get; set; } = null!; } public class AssetIndexProperties { [JsonRequired] public string id { get; set; } = ""; [JsonRequired] public string url { get; set; } = ""; [JsonRequired] public string sha1 { get; set; } = ""; [JsonRequired] public int size { get; set; } [JsonRequired] public int totalSize { get; set; } } public class Downloads { [JsonRequired] public Artifact client { get; set; } = null!; } public class JavaVersion { [JsonRequired] public string component { get; set; } = ""; [JsonRequired] public int majorVersion { get; set; } } public class ArgValue { public struct StringOrArray : IEnumerable { private string[] ar; public StringOrArray(ICollection v) => ar = v.ToArray(); public StringOrArray(string v) => ar = [v]; public static implicit operator StringOrArray(string[] v) => new(v); public static implicit operator StringOrArray(string v) => new(v); public static implicit operator string[](StringOrArray sar) => sar.ar; public IEnumerator GetEnumerator() => ar.AsEnumerable().GetEnumerator(); IEnumerator IEnumerable.GetEnumerator() => ar.GetEnumerator(); } public ArgValue() { } public ArgValue(string arg) => value = arg; public static implicit operator ArgValue(string arg) => new(arg); [JsonRequired] public StringOrArray value { get; set; } = []; public List rules { get; set; } = new(); } public class ArgumentsNew { [JsonRequired] public List jvm { get; set; } = new(); [JsonRequired] public List game { get; set; } = new(); }