mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-12 13:26:53 -04:00
Added uuid storage in order to prevent uuid problem
This commit is contained in:
parent
38027fc5af
commit
296df23e15
@ -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);
|
||||
|
@ -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())
|
||||
|
@ -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<String> 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() {
|
||||
|
@ -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<String, String> 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);
|
||||
|
@ -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));
|
||||
|
@ -51,9 +51,9 @@ public class OptiFineInstaller extends Task implements PreviousResultRegistrar<F
|
||||
|
||||
@Override
|
||||
public void executeTask() throws Exception {
|
||||
if (profile == null || profile.getSelectedMinecraftVersion() == null)
|
||||
if (profile == null || profile.getMinecraftProvider().getSelectedVersion() == null)
|
||||
throw new Exception(C.i18n("install.no_version"));
|
||||
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.clear();
|
||||
|
@ -51,9 +51,9 @@ public class MinecraftDownloadService extends IMinecraftDownloadService {
|
||||
@Override
|
||||
public List<GameLauncher.DownloadLibraryJob> getDownloadLibraries() {
|
||||
ArrayList<GameLauncher.DownloadLibraryJob> 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();
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -235,7 +235,7 @@
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="btnLogout" alignment="0" pref="26" max="32767" attributes="0"/>
|
||||
<Component id="btnLogout" alignment="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
</Layout>
|
||||
|
@ -388,7 +388,7 @@ public class MainPagePanel extends AnimatedPanel implements Event<String> {
|
||||
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<String> {
|
||||
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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user