package net.itstjf.accountmanager.alts;
import java.util.UUID;
import net.minecraft.client.Minecraft;
import net.minecraft.util.Session;
import net.itstjf.accountmanager.util.Encryption;
import net.itstjf.accountmanager.util.SessionChanger;
import net.itstjf.accountmanager.main.LiteModAccountManager;
import com.mojang.authlib.Agent;
import com.mojang.authlib.AuthenticationService;
import com.mojang.authlib.UserAuthentication;
import com.mojang.authlib.minecraft.MinecraftSessionService;
import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
import com.mojang.util.UUIDTypeAdapter;
public class AltManager {
LiteModAccountManager liteMod = LiteModAccountManager.instance;
private static AltManager manager = null;
public AuthenticationService authService;
public MinecraftSessionService sessionService;
public UUID uuid;
public UserAuthentication auth;
private String currentUser;
private String currentPass;
private AltManager() {
uuid = UUID.randomUUID();
authService = new YggdrasilAuthenticationService(Minecraft.getMinecraft().getProxy(), uuid.toString());
auth = authService.createUserAuthentication(Agent.MINECRAFT);
sessionService = authService.createMinecraftSessionService();
}
public static AltManager getInstance() {
if (manager == null) {
manager = new AltManager();
}
return manager;
}
public Throwable setUser(String username, String password) {
String newUser = null;
String newPass = null;
try {
newUser = Encryption.decrypt(username);
} catch (Exception e) {
e.printStackTrace();
return e;
}
try {
newPass = Encryption.decrypt(password);
} catch (Exception e) {
e.printStackTrace();
return e;
}
auth.logOut();
auth.setUsername(newUser);
auth.setPassword(newPass);
try {
auth.logIn();
Session session = new Session(this.auth.getSelectedProfile().getName(), UUIDTypeAdapter.fromUUID(auth.getSelectedProfile().getId()), auth.getAuthenticatedToken(), auth.getUserType().getName());
SessionChanger.setSession(session);
for (int i = 0; i < liteMod.altList.size(); i++) {
AccountInfo data = liteMod.altList.get(i);
if (data.user.equals(newUser) && data.pass.equals(newPass)) {
data.alias = session.getUsername();
}
}
} catch (Exception e) {
e.printStackTrace();
return e;
}
return null;
}
public boolean setUserOffline(String username) {
auth.logOut();
Session session = new Session(username, username, "0", "legacy");
try {
SessionChanger.setSession(session);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}