mirror of
https://github.com/CyberL1/Minecraft-Realms-Emulator.git
synced 2024-11-21 13:48:21 -05:00
fix: slot compatibility
This commit is contained in:
parent
4546e84d8d
commit
5115c608d7
@ -150,14 +150,14 @@ namespace Minecraft_Realms_Emulator.Controllers
|
||||
|
||||
Slot activeSlot = world.Slots.Find(s => s.SlotId == world.ActiveSlot);
|
||||
|
||||
int versionsCompared = SemVersion.Parse(gameVersion, SemVersionStyles.OptionalPatch).ComparePrecedenceTo(SemVersion.Parse(activeSlot.Version, SemVersionStyles.OptionalPatch));
|
||||
string isCompatible = versionsCompared == 0 ? "COMPATIBLE" : versionsCompared < 0 ? "NEEDS_DOWNGRADE" : "NEEDS_UPGRADE";
|
||||
|
||||
List<SlotsResponse> slots = [];
|
||||
List<SlotResponse> slots = [];
|
||||
|
||||
foreach (var slot in world.Slots)
|
||||
{
|
||||
slots.Add(new SlotsResponse()
|
||||
int versionsCompared = SemVersion.Parse(gameVersion, SemVersionStyles.OptionalPatch).ComparePrecedenceTo(SemVersion.Parse(slot.Version, SemVersionStyles.OptionalPatch));
|
||||
string compatibility = versionsCompared == 0 ? "COMPATIBLE" : versionsCompared < 0 ? "NEEDS_DOWNGRADE" : "NEEDS_UPGRADE";
|
||||
|
||||
slots.Add(new SlotResponse()
|
||||
{
|
||||
SlotId = slot.SlotId,
|
||||
Options = JsonConvert.SerializeObject(new
|
||||
@ -173,11 +173,13 @@ namespace Minecraft_Realms_Emulator.Controllers
|
||||
spawnNPCs = slot.SpawnNPCs,
|
||||
commandBlocks = slot.CommandBlocks,
|
||||
version = slot.Version,
|
||||
compatibility = isCompatible
|
||||
compatibility
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
var activeSlotOptions = JsonConvert.DeserializeObject<SlotOptionsResponse>(slots.Find(s => s.SlotId == activeSlot.SlotId).Options);
|
||||
|
||||
WorldResponse response = new()
|
||||
{
|
||||
Id = world.Id,
|
||||
@ -198,8 +200,8 @@ namespace Minecraft_Realms_Emulator.Controllers
|
||||
DaysLeft = ((DateTimeOffset)world.Subscription.StartDate.AddDays(30) - DateTime.Today).Days,
|
||||
Expired = ((DateTimeOffset)world.Subscription.StartDate.AddDays(30) - DateTime.Today).Days < 0,
|
||||
ExpiredTrial = false,
|
||||
ActiveVersion = activeSlot.Version,
|
||||
Compatibility = isCompatible
|
||||
ActiveVersion = activeSlotOptions.Version,
|
||||
Compatibility = activeSlotOptions.Compatibility
|
||||
};
|
||||
|
||||
return response;
|
||||
@ -344,7 +346,7 @@ namespace Minecraft_Realms_Emulator.Controllers
|
||||
}
|
||||
|
||||
[HttpPut("{wId}/slot/{sId}")]
|
||||
public async Task<ActionResult<bool>> SwitchSlot(int wId, int sId)
|
||||
public ActionResult<bool> SwitchSlot(int wId, int sId)
|
||||
{
|
||||
var world = _context.Worlds.Find(wId);
|
||||
|
||||
@ -357,7 +359,8 @@ namespace Minecraft_Realms_Emulator.Controllers
|
||||
string cookie = Request.Headers.Cookie;
|
||||
string gameVersion = cookie.Split(";")[2].Split("=")[1];
|
||||
|
||||
_context.Slots.Add(new() {
|
||||
_context.Slots.Add(new()
|
||||
{
|
||||
World = world,
|
||||
SlotId = sId,
|
||||
SlotName = "",
|
||||
|
@ -0,0 +1,9 @@
|
||||
using Minecraft_Realms_Emulator.Requests;
|
||||
|
||||
namespace Minecraft_Realms_Emulator.Responses
|
||||
{
|
||||
public class SlotOptionsResponse : SlotOptionsRequest
|
||||
{
|
||||
public string Compatibility { get; set; } = null!;
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
namespace Minecraft_Realms_Emulator.Responses
|
||||
{
|
||||
public class SlotsResponse
|
||||
public class SlotResponse
|
||||
{
|
||||
public int SlotId { get; set; }
|
||||
public string Options { get; set; } = null!;
|
@ -9,7 +9,7 @@ namespace Minecraft_Realms_Emulator.Entities
|
||||
public bool Expired { get; set; } = false;
|
||||
public bool ExpiredTrial { get; set; } = false;
|
||||
public string Compatibility { get; set; } = null!;
|
||||
public List<SlotsResponse> Slots { get; set; } = null!;
|
||||
public List<SlotResponse> Slots { get; set; } = null!;
|
||||
public string ActiveVersion { get; set; } = null!;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user