diff --git a/MyMcRealms/Controllers/WorldsController.cs b/MyMcRealms/Controllers/WorldsController.cs index f8fd5bc..c094a0e 100644 --- a/MyMcRealms/Controllers/WorldsController.cs +++ b/MyMcRealms/Controllers/WorldsController.cs @@ -2,7 +2,9 @@ using MyMcRealms.Attributes; using MyMcRealms.MyMcAPI.Responses; using MyMcRealms.Responses; +using Newtonsoft.Json; using Semver; +using System.Text.Json; namespace MyMcRealms.Controllers { @@ -72,7 +74,7 @@ namespace MyMcRealms.Controllers } } - ServersResponse servers = new() + ServersResponse servers = new() { Servers = allWorlds }; @@ -113,6 +115,12 @@ namespace MyMcRealms.Controllers whitelistedPlayers.Add(whitelistedPlayer); } + string cookie = Request.Headers.Cookie; + string gameVerision = cookie.Split(";")[2].Split("=")[1]; + + int versionsCompared = SemVersion.Parse(gameVerision, SemVersionStyles.OptionalPatch).ComparePrecedenceTo(SemVersion.Parse(world.GameVersion, SemVersionStyles.OptionalPatch)); + string isCompatible = versionsCompared == 0 ? "COMPATIBLE" : versionsCompared < 0 ? "NEEDS_DOWNGRADE" : "NEEDS_UPGRADE"; + WorldResponse response = new() { Id = wId, @@ -132,7 +140,20 @@ namespace MyMcRealms.Controllers DaysLeft = 7, Expired = false, ExpiredTrial = false, - ActiveVersion = world.GameVersion + ActiveVersion = world.GameVersion, + Slots = + [ + new() + { + SlotId = 1, + Options = JsonConvert.SerializeObject(new + { + slotName = "my-mc.link", + version = world.GameVersion, + compatibility = isCompatible, + }) + } + ] }; return Ok(response); diff --git a/MyMcRealms/Responses/SlotResponse.cs b/MyMcRealms/Responses/SlotResponse.cs new file mode 100644 index 0000000..d69ac8d --- /dev/null +++ b/MyMcRealms/Responses/SlotResponse.cs @@ -0,0 +1,8 @@ +namespace MyMcRealms.Responses +{ + public class SlotResponse + { + public int SlotId { get; set; } + public string Options { get; set; } = null!; + } +} diff --git a/MyMcRealms/Responses/WorldResponse.cs b/MyMcRealms/Responses/WorldResponse.cs index 5bd793f..7726cfd 100644 --- a/MyMcRealms/Responses/WorldResponse.cs +++ b/MyMcRealms/Responses/WorldResponse.cs @@ -18,7 +18,7 @@ namespace MyMcRealms.Responses public int? MinigameId { get; set; } public string? MinigameImage { get; set; } public int ActiveSlot { get; set; } = 1; - public JsonDocument[] Slots { get; set; } = []; + public List Slots { get; set; } = []; public bool Member { get; set; } = false; public string RemoteSubscriptionId { get; set; } = Guid.NewGuid().ToString(); public int DaysLeft { get; set; } = 30;