mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-13 13:56:55 -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");
|
HMCLog.log("Starting process");
|
||||||
ProcessBuilder builder = new ProcessBuilder(str);
|
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!");
|
throw new Error("Fucking bug!");
|
||||||
builder.directory(provider.getRunDirectory(get.getSelectedMinecraftVersion().id))
|
builder.directory(provider.getRunDirectory(provider.getSelectedVersion().id))
|
||||||
.environment().put("APPDATA", get.getCanonicalGameDir());
|
.environment().put("APPDATA", get.getCanonicalGameDir());
|
||||||
JavaProcess jp = new JavaProcess(str, builder.start(), PROCESS_MANAGER);
|
JavaProcess jp = new JavaProcess(str, builder.start(), PROCESS_MANAGER);
|
||||||
launchEvent.execute(jp);
|
launchEvent.execute(jp);
|
||||||
|
@ -68,7 +68,7 @@ public class MinecraftLoader extends AbstractMinecraftLoader {
|
|||||||
String mainClass = version.mainClass;
|
String mainClass = version.mainClass;
|
||||||
res.add((v.isCanceledWrapper() ? "" : "-mainClass=") + mainClass);
|
res.add((v.isCanceledWrapper() ? "" : "-mainClass=") + mainClass);
|
||||||
|
|
||||||
String arg = v.getSelectedMinecraftVersion().minecraftArguments;
|
String arg = provider.getSelectedVersion().minecraftArguments;
|
||||||
String[] splitted = StrUtils.tokenize(arg);
|
String[] splitted = StrUtils.tokenize(arg);
|
||||||
|
|
||||||
if (!checkAssetsExist())
|
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.launcher.version.GameDirType;
|
||||||
import org.jackhuang.hellominecraft.utils.StrUtils;
|
import org.jackhuang.hellominecraft.utils.StrUtils;
|
||||||
import org.jackhuang.hellominecraft.utils.Utils;
|
import org.jackhuang.hellominecraft.utils.Utils;
|
||||||
import org.jackhuang.hellominecraft.launcher.version.MinecraftVersion;
|
|
||||||
import org.jackhuang.hellominecraft.utils.EventHandler;
|
import org.jackhuang.hellominecraft.utils.EventHandler;
|
||||||
import org.jackhuang.hellominecraft.utils.system.Java;
|
import org.jackhuang.hellominecraft.utils.system.Java;
|
||||||
import org.jackhuang.hellominecraft.utils.system.OS;
|
import org.jackhuang.hellominecraft.utils.system.OS;
|
||||||
@ -110,10 +109,6 @@ public final class Profile {
|
|||||||
return selectedMinecraftVersion;
|
return selectedMinecraftVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MinecraftVersion getSelectedMinecraftVersion() {
|
|
||||||
return getMinecraftProvider().getSelectedVersion();
|
|
||||||
}
|
|
||||||
|
|
||||||
public transient final EventHandler<String> selectedVersionChangedEvent = new EventHandler<>(this);
|
public transient final EventHandler<String> selectedVersionChangedEvent = new EventHandler<>(this);
|
||||||
|
|
||||||
public void setSelectedMinecraftVersion(String selectedMinecraftVersion) {
|
public void setSelectedMinecraftVersion(String selectedMinecraftVersion) {
|
||||||
@ -196,9 +191,9 @@ public final class Profile {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public File getFolder(String folder) {
|
public File getFolder(String folder) {
|
||||||
if (getSelectedMinecraftVersion() == null)
|
if (getMinecraftProvider().getSelectedVersion() == null)
|
||||||
return new File(getCanonicalGameDirFile(), folder);
|
return new File(getCanonicalGameDirFile(), folder);
|
||||||
return getMinecraftProvider().getRunDirectory(getSelectedMinecraftVersion().id, folder);
|
return getMinecraftProvider().getRunDirectory(getMinecraftProvider().getSelectedVersion().id, folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.jackhuang.hellominecraft.launcher.utils.auth;
|
package org.jackhuang.hellominecraft.launcher.utils.auth;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import org.jackhuang.hellominecraft.C;
|
import org.jackhuang.hellominecraft.C;
|
||||||
import org.jackhuang.hellominecraft.utils.StrUtils;
|
import org.jackhuang.hellominecraft.utils.StrUtils;
|
||||||
import org.jackhuang.hellominecraft.utils.code.DigestUtils;
|
import org.jackhuang.hellominecraft.utils.code.DigestUtils;
|
||||||
@ -27,10 +29,29 @@ import org.jackhuang.hellominecraft.utils.code.DigestUtils;
|
|||||||
*/
|
*/
|
||||||
public final class OfflineAuthenticator extends IAuthenticator {
|
public final class OfflineAuthenticator extends IAuthenticator {
|
||||||
|
|
||||||
|
Map<String, String> uuidMap = null;
|
||||||
|
|
||||||
public OfflineAuthenticator(String clientToken) {
|
public OfflineAuthenticator(String clientToken) {
|
||||||
super(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
|
@Override
|
||||||
public UserProfileProvider login(LoginInfo info) throws AuthenticationException {
|
public UserProfileProvider login(LoginInfo info) throws AuthenticationException {
|
||||||
if (StrUtils.isBlank(info.username))
|
if (StrUtils.isBlank(info.username))
|
||||||
@ -38,6 +59,13 @@ public final class OfflineAuthenticator extends IAuthenticator {
|
|||||||
UserProfileProvider result = new UserProfileProvider();
|
UserProfileProvider result = new UserProfileProvider();
|
||||||
result.setUserName(info.username);
|
result.setUserName(info.username);
|
||||||
String uuid = getUUIDFromUserName(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.setSession(uuid);
|
||||||
result.setUserId(uuid);
|
result.setUserId(uuid);
|
||||||
result.setAccessToken(uuid);
|
result.setAccessToken(uuid);
|
||||||
|
@ -52,13 +52,13 @@ public class LiteLoaderInstaller extends Task implements PreviousResultRegistrar
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void executeTask() throws Exception {
|
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"));
|
throw new IllegalStateException(C.i18n("install.no_version"));
|
||||||
if (pre.size() != 1 && installer == null)
|
if (pre.size() != 1 && installer == null)
|
||||||
throw new IllegalStateException("No registered previous task.");
|
throw new IllegalStateException("No registered previous task.");
|
||||||
if (installer == null)
|
if (installer == null)
|
||||||
installer = pre.get(pre.size() - 1).getResult();
|
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.inheritsFrom = mv.id;
|
||||||
mv.jar = mv.jar == null ? mv.id : mv.jar;
|
mv.jar = mv.jar == null ? mv.id : mv.jar;
|
||||||
mv.libraries = new ArrayList(Arrays.asList(version.libraries));
|
mv.libraries = new ArrayList(Arrays.asList(version.libraries));
|
||||||
|
@ -51,9 +51,9 @@ public class OptiFineInstaller extends Task implements PreviousResultRegistrar<F
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void executeTask() throws Exception {
|
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"));
|
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.inheritsFrom = mv.id;
|
||||||
mv.jar = mv.jar == null ? mv.id : mv.jar;
|
mv.jar = mv.jar == null ? mv.id : mv.jar;
|
||||||
mv.libraries.clear();
|
mv.libraries.clear();
|
||||||
|
@ -51,9 +51,9 @@ public class MinecraftDownloadService extends IMinecraftDownloadService {
|
|||||||
@Override
|
@Override
|
||||||
public List<GameLauncher.DownloadLibraryJob> getDownloadLibraries() {
|
public List<GameLauncher.DownloadLibraryJob> getDownloadLibraries() {
|
||||||
ArrayList<GameLauncher.DownloadLibraryJob> downloadLibraries = new ArrayList<>();
|
ArrayList<GameLauncher.DownloadLibraryJob> downloadLibraries = new ArrayList<>();
|
||||||
if (profile.getSelectedMinecraftVersion() == null)
|
if (mgr.getSelectedVersion() == null)
|
||||||
return downloadLibraries;
|
return downloadLibraries;
|
||||||
MinecraftVersion v = profile.getSelectedMinecraftVersion().resolve(mgr);
|
MinecraftVersion v = mgr.getSelectedVersion().resolve(mgr);
|
||||||
if (v.libraries != null)
|
if (v.libraries != null)
|
||||||
for (IMinecraftLibrary l : v.libraries) {
|
for (IMinecraftLibrary l : v.libraries) {
|
||||||
l.init();
|
l.init();
|
||||||
|
@ -1165,7 +1165,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget
|
|||||||
isLoading = true;
|
isLoading = true;
|
||||||
cboVersions.removeAllItems();
|
cboVersions.removeAllItems();
|
||||||
int index = 0, i = 0;
|
int index = 0, i = 0;
|
||||||
MinecraftVersion selVersion = getProfile().getSelectedMinecraftVersion();
|
MinecraftVersion selVersion = getProfile().getMinecraftProvider().getSelectedVersion();
|
||||||
String selectedMC = selVersion == null ? null : selVersion.id;
|
String selectedMC = selVersion == null ? null : selVersion.id;
|
||||||
for (MinecraftVersion each : getProfile().getMinecraftProvider().getVersions()) {
|
for (MinecraftVersion each : getProfile().getMinecraftProvider().getVersions()) {
|
||||||
cboVersions.addItem(each.id);
|
cboVersions.addItem(each.id);
|
||||||
@ -1181,7 +1181,7 @@ public final class GameSettingsPanel extends AnimatedPanel implements DropTarget
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loadMinecraftVersion() {
|
void loadMinecraftVersion() {
|
||||||
loadMinecraftVersion(getProfile().getSelectedMinecraftVersion());
|
loadMinecraftVersion(getProfile().getMinecraftProvider().getSelectedVersion());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -235,7 +235,7 @@
|
|||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<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>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
</Layout>
|
</Layout>
|
||||||
|
@ -388,7 +388,7 @@ public class MainPagePanel extends AnimatedPanel implements Event<String> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final String name = (String) cboProfiles.getSelectedItem();
|
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.");
|
HMCLog.warn("There's no selected version, rechoose a version.");
|
||||||
MessageBox.ShowLocalized("minecraft.no_selected_version");
|
MessageBox.ShowLocalized("minecraft.no_selected_version");
|
||||||
return;
|
return;
|
||||||
@ -478,7 +478,7 @@ public class MainPagePanel extends AnimatedPanel implements Event<String> {
|
|||||||
int index = 0, i = 0;
|
int index = 0, i = 0;
|
||||||
getCurrentProfile().selectedVersionChangedEvent.register(this);
|
getCurrentProfile().selectedVersionChangedEvent.register(this);
|
||||||
getCurrentProfile().getMinecraftProvider().refreshVersions();
|
getCurrentProfile().getMinecraftProvider().refreshVersions();
|
||||||
MinecraftVersion selVersion = getCurrentProfile().getSelectedMinecraftVersion();
|
MinecraftVersion selVersion = getCurrentProfile().getMinecraftProvider().getSelectedVersion();
|
||||||
String selectedMC = selVersion == null ? null : selVersion.id;
|
String selectedMC = selVersion == null ? null : selVersion.id;
|
||||||
if (getCurrentProfile().getMinecraftProvider().getVersions().isEmpty()) {
|
if (getCurrentProfile().getMinecraftProvider().getVersions().isEmpty()) {
|
||||||
if (!showedNoVersion)
|
if (!showedNoVersion)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user