diff --git a/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs b/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs index 4b95d1a..8bae65c 100644 --- a/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs +++ b/Minecraft-Realms-Emulator/Enums/SettingsEnum.cs @@ -5,6 +5,8 @@ NewsLink, DefaultServerAddress, TrialMode, - WorkMode + WorkMode, + OnlineMode, + AutomaticRealmsCreation } } diff --git a/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs b/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs index 2d0a640..d39325b 100644 --- a/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs +++ b/Minecraft-Realms-Emulator/Helpers/Config/Settings.cs @@ -8,5 +8,7 @@ namespace Minecraft_Realms_Emulator.Helpers.Config public string NewsLink { get; set; } = "https://github.com/CyberL1/Minecraft-Realms-Emulator"; public bool TrialMode { get; set; } = true; public string WorkMode { get; set; } = nameof(WorkModeEnum.EXTERNAL); + public bool OnlineMode { get; set; } = false; + public bool AutomaticRealmsCreation { get; set; } = true; } } diff --git a/Minecraft-Realms-Emulator/Modes/External/McoController.cs b/Minecraft-Realms-Emulator/Modes/External/McoController.cs index 616c0a0..84d540f 100644 --- a/Minecraft-Realms-Emulator/Modes/External/McoController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/McoController.cs @@ -20,8 +20,23 @@ namespace Minecraft_Realms_Emulator.Modes.External } [HttpGet("available")] - public ActionResult GetAvailable() + public async Task> GetAvailable() { + if (new ConfigHelper(_context).GetSetting(nameof(SettingsEnum.OnlineMode)).Value) + { + string cookie = Request.Headers.Cookie; + string playerUUID = cookie.Split(";")[0].Split(":")[2]; + + try + { + await new HttpClient().GetFromJsonAsync($"https://sessionserver.mojang.com/session/minecraft/profile/{playerUUID}"); + } + catch + { + return Unauthorized(); + } + } + return Ok(true); } diff --git a/Minecraft-Realms-Emulator/Modes/External/WorldsController.cs b/Minecraft-Realms-Emulator/Modes/External/WorldsController.cs index b517e47..05751f9 100644 --- a/Minecraft-Realms-Emulator/Modes/External/WorldsController.cs +++ b/Minecraft-Realms-Emulator/Modes/External/WorldsController.cs @@ -38,7 +38,7 @@ namespace Minecraft_Realms_Emulator.Modes.External List allWorlds = []; - if (ownedWorlds.ToArray().Length == 0) + if (ownedWorlds.ToArray().Length == 0 && new ConfigHelper(_context).GetSetting(nameof(SettingsEnum.AutomaticRealmsCreation)).Value) { var world = new World { diff --git a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/McoController.cs b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/McoController.cs index 82e1f50..f4f3057 100644 --- a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/McoController.cs +++ b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/McoController.cs @@ -20,8 +20,23 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Controllers } [HttpGet("available")] - public ActionResult GetAvailable() + public async Task> GetAvailable() { + if (new ConfigHelper(_context).GetSetting(nameof(SettingsEnum.OnlineMode)).Value) + { + string cookie = Request.Headers.Cookie; + string playerUUID = cookie.Split(";")[0].Split(":")[2]; + + try + { + await new HttpClient().GetFromJsonAsync($"https://sessionserver.mojang.com/session/minecraft/profile/{playerUUID}"); + } + catch + { + return Unauthorized(); + } + } + return Ok(true); } diff --git a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs index 2828564..b70be8d 100644 --- a/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs +++ b/Minecraft-Realms-Emulator/Modes/Realms/Controllers/WorldsController.cs @@ -41,7 +41,7 @@ namespace Minecraft_Realms_Emulator.Modes.Realms.Controllers List allWorlds = []; - if (ownedWorlds.ToArray().Length == 0) + if (ownedWorlds.ToArray().Length == 0 && new ConfigHelper(_context).GetSetting(nameof(SettingsEnum.AutomaticRealmsCreation)).Value) { var world = new World {