diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java index ae7bec0c4..24f691136 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java @@ -143,9 +143,9 @@ public class GameLauncher { } HMCLog.log("Starting process"); ProcessBuilder builder = new ProcessBuilder(str); - if (get == null || get.getSelectedMinecraftVersion() == null || StrUtils.isBlank(get.getCanonicalGameDir())) + if (get == null || provider.getSelectedVersion() == null || StrUtils.isBlank(get.getCanonicalGameDir())) throw new Error("Fucking bug!"); - builder.directory(provider.getRunDirectory(get.getSelectedMinecraftVersion().id)) + builder.directory(provider.getRunDirectory(provider.getSelectedVersion().id)) .environment().put("APPDATA", get.getCanonicalGameDir()); JavaProcess jp = new JavaProcess(str, builder.start(), PROCESS_MANAGER); launchEvent.execute(jp); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java index 23b2fd136..44b8b2caf 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java @@ -68,7 +68,7 @@ public class MinecraftLoader extends AbstractMinecraftLoader { String mainClass = version.mainClass; res.add((v.isCanceledWrapper() ? "" : "-mainClass=") + mainClass); - String arg = v.getSelectedMinecraftVersion().minecraftArguments; + String arg = provider.getSelectedVersion().minecraftArguments; String[] splitted = StrUtils.tokenize(arg); if (!checkAssetsExist()) diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java index 0ead37d07..d9b01ca9b 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java @@ -27,7 +27,6 @@ import org.jackhuang.hellominecraft.launcher.utils.installers.InstallerService; import org.jackhuang.hellominecraft.launcher.version.GameDirType; import org.jackhuang.hellominecraft.utils.StrUtils; import org.jackhuang.hellominecraft.utils.Utils; -import org.jackhuang.hellominecraft.launcher.version.MinecraftVersion; import org.jackhuang.hellominecraft.utils.EventHandler; import org.jackhuang.hellominecraft.utils.system.Java; import org.jackhuang.hellominecraft.utils.system.OS; @@ -110,10 +109,6 @@ public final class Profile { return selectedMinecraftVersion; } - public MinecraftVersion getSelectedMinecraftVersion() { - return getMinecraftProvider().getSelectedVersion(); - } - public transient final EventHandler selectedVersionChangedEvent = new EventHandler<>(this); public void setSelectedMinecraftVersion(String selectedMinecraftVersion) { @@ -196,9 +191,9 @@ public final class Profile { } public File getFolder(String folder) { - if (getSelectedMinecraftVersion() == null) + if (getMinecraftProvider().getSelectedVersion() == null) return new File(getCanonicalGameDirFile(), folder); - return getMinecraftProvider().getRunDirectory(getSelectedMinecraftVersion().id, folder); + return getMinecraftProvider().getRunDirectory(getMinecraftProvider().getSelectedVersion().id, folder); } public String getName() { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java index 2f1d36c37..389c7c040 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/OfflineAuthenticator.java @@ -17,6 +17,8 @@ */ package org.jackhuang.hellominecraft.launcher.utils.auth; +import java.util.HashMap; +import java.util.Map; import org.jackhuang.hellominecraft.C; import org.jackhuang.hellominecraft.utils.StrUtils; import org.jackhuang.hellominecraft.utils.code.DigestUtils; @@ -27,10 +29,29 @@ import org.jackhuang.hellominecraft.utils.code.DigestUtils; */ public final class OfflineAuthenticator extends IAuthenticator { + Map uuidMap = null; + public OfflineAuthenticator(String clientToken) { super(clientToken); } + @Override + public void onLoadSettings(Map m) { + super.onLoadSettings(m); + Object o = m.get("uuidMap"); + if (o != null && o instanceof Map) + uuidMap = (Map) o; + else + uuidMap = new HashMap<>(); + } + + @Override + public Map onSaveSettings() { + Map m = super.onSaveSettings(); + m.put("uuidMap", m); + return m; + } + @Override public UserProfileProvider login(LoginInfo info) throws AuthenticationException { if (StrUtils.isBlank(info.username)) @@ -38,6 +59,13 @@ public final class OfflineAuthenticator extends IAuthenticator { UserProfileProvider result = new UserProfileProvider(); result.setUserName(info.username); String uuid = getUUIDFromUserName(info.username); + if (uuidMap != null && uuid.contains(uuid)) + uuid = uuidMap.get(info.username); + else { + if (uuidMap == null) + uuidMap = new HashMap<>(); + uuidMap.put(info.username, uuid); + } result.setSession(uuid); result.setUserId(uuid); result.setAccessToken(uuid); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java index 71ce79a86..f99751f30 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java @@ -52,13 +52,13 @@ public class LiteLoaderInstaller extends Task implements PreviousResultRegistrar @Override public void executeTask() throws Exception { - if (profile == null || profile.getSelectedMinecraftVersion() == null) + if (profile == null || profile.getMinecraftProvider().getSelectedVersion() == null) throw new IllegalStateException(C.i18n("install.no_version")); if (pre.size() != 1 && installer == null) throw new IllegalStateException("No registered previous task."); if (installer == null) installer = pre.get(pre.size() - 1).getResult(); - MinecraftVersion mv = (MinecraftVersion) profile.getSelectedMinecraftVersion().clone(); + MinecraftVersion mv = (MinecraftVersion) profile.getMinecraftProvider().getSelectedVersion().clone(); mv.inheritsFrom = mv.id; mv.jar = mv.jar == null ? mv.id : mv.jar; mv.libraries = new ArrayList(Arrays.asList(version.libraries)); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java index cd98d20a9..04f8c1723 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineInstaller.java @@ -51,9 +51,9 @@ public class OptiFineInstaller extends Task implements PreviousResultRegistrar getDownloadLibraries() { ArrayList downloadLibraries = new ArrayList<>(); - if (profile.getSelectedMinecraftVersion() == null) + if (mgr.getSelectedVersion() == null) return downloadLibraries; - MinecraftVersion v = profile.getSelectedMinecraftVersion().resolve(mgr); + MinecraftVersion v = mgr.getSelectedVersion().resolve(mgr); if (v.libraries != null) for (IMinecraftLibrary l : v.libraries) { l.init(); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java index 12aa82ec1..b52fd05c4 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java @@ -1165,7 +1165,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget isLoading = true; cboVersions.removeAllItems(); int index = 0, i = 0; - MinecraftVersion selVersion = getProfile().getSelectedMinecraftVersion(); + MinecraftVersion selVersion = getProfile().getMinecraftProvider().getSelectedVersion(); String selectedMC = selVersion == null ? null : selVersion.id; for (MinecraftVersion each : getProfile().getMinecraftProvider().getVersions()) { cboVersions.addItem(each.id); @@ -1181,7 +1181,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget } void loadMinecraftVersion() { - loadMinecraftVersion(getProfile().getSelectedMinecraftVersion()); + loadMinecraftVersion(getProfile().getMinecraftProvider().getSelectedVersion()); } /** diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form index bb770b16a..6044b13cf 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.form @@ -235,7 +235,7 @@ - + diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java index d46b41d25..209074413 100755 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java @@ -388,7 +388,7 @@ public class MainPagePanel extends AnimatedPanel implements Event { return; } final String name = (String) cboProfiles.getSelectedItem(); - if (StrUtils.isBlank(name) || getCurrentProfile().getSelectedMinecraftVersion() == null) { + if (StrUtils.isBlank(name) || getCurrentProfile().getMinecraftProvider().getSelectedVersion() == null) { HMCLog.warn("There's no selected version, rechoose a version."); MessageBox.ShowLocalized("minecraft.no_selected_version"); return; @@ -478,7 +478,7 @@ public class MainPagePanel extends AnimatedPanel implements Event { int index = 0, i = 0; getCurrentProfile().selectedVersionChangedEvent.register(this); getCurrentProfile().getMinecraftProvider().refreshVersions(); - MinecraftVersion selVersion = getCurrentProfile().getSelectedMinecraftVersion(); + MinecraftVersion selVersion = getCurrentProfile().getMinecraftProvider().getSelectedVersion(); String selectedMC = selVersion == null ? null : selVersion.id; if (getCurrentProfile().getMinecraftProvider().getVersions().isEmpty()) { if (!showedNoVersion)