diff --git a/Launcher-Core/Launcher.cs b/Launcher-Core/Launcher.cs
index 3a36263..fcf7170 100644
--- a/Launcher-Core/Launcher.cs
+++ b/Launcher-Core/Launcher.cs
@@ -17,17 +17,15 @@ namespace Plombir;
public class Launcher
{
private readonly string _version;
- private readonly string _nickname;
static private MinecraftPath? _mcPath;
static private MinecraftLauncher? _mcLauncher;
public int DownloadProgress;
public string? DownloadStatus;
- public Launcher(string userName, string version, string? location = null)
+ public Launcher(string version, string? location = null)
{
_version = version;
- _nickname = userName;
_mcPath = new($"{location}/{version}/minecraft");
_mcLauncher = new(_mcPath);
}
@@ -51,15 +49,29 @@ public class Launcher
return;
}
- async public Task RunLauncher()
+ public MSession CreateOfflineSession(string nickname)
+ {
+ var s = MSession.CreateOfflineSession(nickname);
+ if (s is null) throw new NullReferenceException("Tried creating offline session, but it's resulted in null!");
+ return s;
+ }
+
+ public MSession CreateLicensedSession(string uuid, string accsessToken, string nickname)
+ {
+ var s = new MSession(nickname, accsessToken, uuid);
+ if (s is null) throw new NullReferenceException("Tried creating licensed session, but it's resulted in null!");
+ return s;
+ }
+
+ async public Task RunLauncher(MSession session)
{
if (_mcLauncher is null)
throw new NullReferenceException("Failed to run launcher! Launcher is null!");
var process = await _mcLauncher.BuildProcessAsync(_version, new MLaunchOption
{
-
- Session = MSession.CreateOfflineSession(_nickname),
+ // Passing session, to support offline and licensed login methods.
+ Session = session,
MaximumRamMb = 4096,
}) ?? throw new Exception("Failed to start minecraft process!");
diff --git a/Launcher-UI/ConfigManager.cs b/Launcher-UI/ConfigManager.cs
index 4d17fad..8d07037 100644
--- a/Launcher-UI/ConfigManager.cs
+++ b/Launcher-UI/ConfigManager.cs
@@ -10,12 +10,11 @@ public class ConfigManager
static private readonly string defaultVersion = "1.20.1";
static private readonly string defaultNickname = "slugcat";
- static private readonly string currentTweaksVersion = "1.2.0";
+ static private readonly string currentTweaksVersion = "1.2.1";
static private readonly string defaultLoginType = "offline";
static private readonly string defaultUuid = "offline";
static private readonly string defaultAccsessToken = "offline";
- static private readonly string defaultClientToken = "offline";
public static void BuildDefault()
{
@@ -40,7 +39,6 @@ public class ConfigManager
["login-method"] = defaultLoginType,
["uuid"] = defaultUuid,
["accsess-token"] = defaultAccsessToken,
- ["client-token"] = defaultClientToken,
};
@@ -87,7 +85,6 @@ public class ConfigManager
case "nickname": { WriteInConfig(key, defaultNickname); return defaultNickname; }
case "accsess-token": { WriteInConfig(key, defaultAccsessToken); return defaultAccsessToken; }
- case "client-token": { WriteInConfig(key, defaultClientToken); return defaultClientToken; }
case "uuid": { WriteInConfig(key, defaultUuid); return defaultUuid; }
case "login-method": { WriteInConfig(key, defaultLoginType); return defaultLoginType; }
case "tweaks-version":
diff --git a/Launcher-UI/LauncherUtils.cs b/Launcher-UI/LauncherUtils.cs
index 0fb7874..90befe0 100644
--- a/Launcher-UI/LauncherUtils.cs
+++ b/Launcher-UI/LauncherUtils.cs
@@ -10,18 +10,23 @@ public class LauncherUtils
{
public async static Task CreateMinecraftInstance(MainWindowViewModel vm, Window windowCaller)
{
+ var licenseStatus = ConfigManager.ReadConfig("login-method");
+
if (vm.Usernick is null) throw new NullReferenceException("Failed to create minecraft instance! Nickname is null!");
if (vm.SelectedVersion is null) throw new NullReferenceException("Failed to create minecraft instance! Selected version is null!");
System.Console.WriteLine($"Creating minecraft instance for {vm.Usernick}, {vm.SelectedVersion} in {vm.RuntimeLocation}");
- LoadingWindow loading = new(vm.Usernick, vm.SelectedVersion, vm.RuntimeLocation);
- ConfigManager.WriteInConfig("last-version-launched", vm.SelectedVersion);
- ConfigManager.WriteInConfig("nickname", vm.Usernick);
+ LoadingWindow loading = new(vm);
+
+ SaveCurrentVariablesToConfig(vm);
loading.Show();
await loading.InitLoading();
loading.Close();
- await loading.RunMinecraft();
+
+ if (licenseStatus == "microsoft") await loading.RunMinecraft(true);
+ else await loading.RunMinecraft(false);
+
return;
}
@@ -29,4 +34,9 @@ public class LauncherUtils
{
}
+
+ private static void SaveCurrentVariablesToConfig(MainWindowViewModel vm)
+ {
+ ConfigManager.WriteInConfig("last-version-launched", vm.SelectedVersion);
+ }
}
diff --git a/Launcher-UI/ViewModels/MainWindowViewModel.cs b/Launcher-UI/ViewModels/MainWindowViewModel.cs
index bcde692..f700160 100644
--- a/Launcher-UI/ViewModels/MainWindowViewModel.cs
+++ b/Launcher-UI/ViewModels/MainWindowViewModel.cs
@@ -23,9 +23,6 @@ public partial class MainWindowViewModel : ViewModelBase
private string? _accsessToken = ConfigManager.ReadConfig("accsess-token");
public string? AccsesToken { get => _accsessToken; set { _accsessToken = value; OnPropertyChanged(nameof(AccsesToken)); } }
- private string? _clientToken = ConfigManager.ReadConfig("client-token");
- public string? ClientToken { get => _clientToken; set { _clientToken = value; OnPropertyChanged(nameof(ClientToken)); } }
-
private string? _uuid = ConfigManager.ReadConfig("uuid");
public string? UUID { get => _uuid; set { _uuid = value; OnPropertyChanged(nameof(UUID)); } }
diff --git a/Launcher-UI/Views/LoadingWindow.axaml.cs b/Launcher-UI/Views/LoadingWindow.axaml.cs
index 1f9aeac..53d317c 100644
--- a/Launcher-UI/Views/LoadingWindow.axaml.cs
+++ b/Launcher-UI/Views/LoadingWindow.axaml.cs
@@ -13,12 +13,14 @@ public partial class LoadingWindow : Window
{
private Launcher ln;
private Task? _buildingTask;
+ private readonly MainWindowViewModel _mainWindowVM;
// Tokens for controlling download task.
CancellationTokenSource tokenSource = new CancellationTokenSource();
- public LoadingWindow(string nickname, string? version = null, string? location = null)
+ public LoadingWindow(MainWindowViewModel mainWindowVM)
{
- ln = new Launcher(nickname, version ?? "1.20.1", location ?? "./runtime");
+ _mainWindowVM = mainWindowVM;
+ ln = new Launcher(_mainWindowVM.SelectedVersion ?? "1.20.1", _mainWindowVM.RuntimeLocation ?? "./runtime");
InitializeComponent();
DataContext = new LoadingWindowViewModel();
}
@@ -52,9 +54,14 @@ public partial class LoadingWindow : Window
}
- public async Task RunMinecraft()
+ public async Task RunMinecraft(bool IsLicensed)
{
- await ln.RunLauncher();
+ var session = ln.CreateOfflineSession(_mainWindowVM.Usernick);
+ if (IsLicensed)
+ {
+ session = ln.CreateLicensedSession(_mainWindowVM.UUID, _mainWindowVM.AccsesToken, _mainWindowVM.Usernick);
+ }
+ await ln.RunLauncher(session);
}
private void onStopDownloadClick(object sender, RoutedEventArgs e)
diff --git a/Launcher-UI/Views/SessionManagmentWindow.axaml b/Launcher-UI/Views/SessionManagmentWindow.axaml
index 6682519..388e954 100644
--- a/Launcher-UI/Views/SessionManagmentWindow.axaml
+++ b/Launcher-UI/Views/SessionManagmentWindow.axaml
@@ -50,6 +50,14 @@
+
+
+
+
+
@@ -86,6 +94,13 @@
HorizontalAlignment="Left"
/>
+
+
@@ -132,13 +147,6 @@
-
-
diff --git a/Launcher-UI/Views/SessionManagmentWindow.axaml.cs b/Launcher-UI/Views/SessionManagmentWindow.axaml.cs
index 77e1d75..75f0e28 100644
--- a/Launcher-UI/Views/SessionManagmentWindow.axaml.cs
+++ b/Launcher-UI/Views/SessionManagmentWindow.axaml.cs
@@ -13,9 +13,15 @@ public partial class SessionManagmentWindow : Window
{
InitializeComponent();
_mainWindowVM = mainWindowVM;
+ PopulateInfo();
+ }
+
+ private void PopulateInfo()
+ {
inputNickname.Text = _mainWindowVM.Usernick; // setting default nickname.
currentNickname.Text = _mainWindowVM.Usernick;
loginMethod.Text = _mainWindowVM.LoginMethod;
+ currentUuid.Text = _mainWindowVM.UUID;
}
private void OnSaveButtonClick(object sender, RoutedEventArgs e)
@@ -26,6 +32,8 @@ public partial class SessionManagmentWindow : Window
Console.WriteLine($"Changing nickname to {inputNickname.Text}");
button.Content = "Saved!";
+ SaveSessionInfo();
+ PopulateInfo();
}
async private void OnMicrosoftLoginClick(object sender, RoutedEventArgs e)
@@ -35,6 +43,15 @@ public partial class SessionManagmentWindow : Window
_mainWindowVM.Usernick = session.Username;
_mainWindowVM.UUID = session.UUID;
_mainWindowVM.AccsesToken = session.AccessToken;
- _mainWindowVM.ClientToken = session.ClientToken;
+ SaveSessionInfo();
+ PopulateInfo();
+ }
+
+ private void SaveSessionInfo()
+ {
+ ConfigManager.WriteInConfig("nickname", _mainWindowVM.Usernick);
+ ConfigManager.WriteInConfig("login-method", _mainWindowVM.LoginMethod);
+ ConfigManager.WriteInConfig("uuid", _mainWindowVM.UUID);
+ ConfigManager.WriteInConfig("accsess-token", _mainWindowVM.AccsesToken);
}
}