Added uuid storage in order to prevent uuid problem

This commit is contained in:
huangyuhui 2016-01-08 19:55:52 +08:00
parent 38027fc5af
commit 296df23e15
10 changed files with 44 additions and 21 deletions

View File

@ -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);

View File

@ -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())

View File

@ -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() {

View File

@ -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);

View File

@ -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));

View File

@ -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();

View File

@ -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();

View File

@ -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());
} }
/** /**

View File

@ -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>

View File

@ -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)