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

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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