64 lines
2.1 KiB
C#
64 lines
2.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.Linq;
|
|
|
|
namespace AlayaCore.Models.Manifests
|
|
{
|
|
[Serializable]
|
|
public sealed class ManifestModel
|
|
{
|
|
public Version AlayaVersion { get; }
|
|
public string RequiredJavaVersion { get; }
|
|
public Uri RequiredJavaBaseUrl { get; }
|
|
public string MinecraftVersion { get; }
|
|
public string NeoforgedVersion { get; }
|
|
|
|
public Uri ServerUrl { get; }
|
|
public int ServerPort { get; }
|
|
public IReadOnlyList<ModFileEntry> Files { get; }
|
|
|
|
public ManifestModel(
|
|
Version alayaVersion,
|
|
string requiredJavaVersion,
|
|
Uri requiredJavaUrl,
|
|
string minecraftVersion,
|
|
string neoforgedVersion,
|
|
Uri serverUrl,
|
|
int serverPort,
|
|
IEnumerable<ModFileEntry> files)
|
|
{
|
|
AlayaVersion = alayaVersion ?? throw new ArgumentNullException(nameof(alayaVersion));
|
|
RequiredJavaVersion = RequireNonEmpty(requiredJavaVersion, nameof(requiredJavaVersion));
|
|
RequiredJavaBaseUrl = requiredJavaUrl ?? throw new ArgumentNullException(nameof(requiredJavaUrl));
|
|
|
|
MinecraftVersion = RequireNonEmpty(minecraftVersion, nameof(minecraftVersion));
|
|
|
|
NeoforgedVersion = RequireNonEmpty(neoforgedVersion, nameof(neoforgedVersion));
|
|
|
|
if (files == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(files));
|
|
}
|
|
|
|
ModFileEntry[] materializedFiles = files.ToArray();
|
|
|
|
if (materializedFiles.Any(file => file == null))
|
|
{
|
|
throw new ArgumentException("Files cannot contain null entries.", nameof(files));
|
|
}
|
|
|
|
Files = new ReadOnlyCollection<ModFileEntry>(materializedFiles);
|
|
}
|
|
|
|
private static string RequireNonEmpty(string value, string paramName)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(value))
|
|
{
|
|
throw new ArgumentException("Value cannot be null, empty, or whitespace.", paramName);
|
|
}
|
|
|
|
return value;
|
|
}
|
|
}
|
|
} |