class Scratch {
public static void createNewSession(String username) {
String uuid = UUID.randomUUID().toString().replace("-", "");
Session session = new Session(username, uuid, "SESSION_ID", "mojang");
try {
setSession(session);
} catch (ReflectiveOperationException e) {
LogManager.getLogger().error("Failed to set new session", e);
}
}
public static void setSession(Session session) throws ReflectiveOperationException {
Field field = ReflectionHelper.findField(Minecraft.class, "field_71449_j", "session"); // SRG & MCP names
if(!field.isAccessible()) {
field.setAccessible(true);
removeFinalFlag(field);
}
field.set(Minecraft.getMinecraft(), session);
}
public static void removeFinalFlag(Field field) throws ReflectiveOperationException {
Field modifiersField = Field.class.getDeclaredField("modifiers");
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
}
}