use of net.technicpack.launchercore.modpacks.sources.IAuthoritativePackSource in project LauncherV3 by TechnicPack.
the class LauncherMain method startLauncher.
private static void startLauncher(final TechnicSettings settings, StartupParameters startupParameters, final LauncherDirectories directories, ResourceLoader resources, IBuildNumber buildNumber) {
UIManager.put("ComboBox.disabledBackground", LauncherFrame.COLOR_FORMELEMENT_INTERNAL);
UIManager.put("ComboBox.disabledForeground", LauncherFrame.COLOR_GREY_TEXT);
System.setProperty("xr.load.xml-reader", "org.ccil.cowan.tagsoup.Parser");
// Remove all log files older than a week
new Thread(new Runnable() {
@Override
public void run() {
Iterator<File> files = FileUtils.iterateFiles(new File(directories.getLauncherDirectory(), "logs"), new String[] { "log" }, false);
while (files.hasNext()) {
File logFile = files.next();
if (logFile.exists() && (new DateTime(logFile.lastModified())).isBefore(DateTime.now().minusWeeks(1))) {
logFile.delete();
}
}
}
}).start();
Utils.getLogger().info("OS: " + System.getProperty("os.name").toLowerCase(Locale.ENGLISH));
Utils.getLogger().info("Identified as " + OperatingSystem.getOperatingSystem().getName());
final SplashScreen splash = new SplashScreen(resources.getImage("launch_splash.png"), 0);
Color bg = LauncherFrame.COLOR_FORMELEMENT_INTERNAL;
splash.getContentPane().setBackground(new Color(bg.getRed(), bg.getGreen(), bg.getBlue(), 255));
splash.pack();
splash.setLocationRelativeTo(null);
splash.setVisible(true);
boolean loadedAether = false;
try {
if (Class.forName("org.apache.maven.repository.internal.MavenRepositorySystemUtils", false, ClassLoader.getSystemClassLoader()) != null) {
loadedAether = true;
}
} catch (ClassNotFoundException ex) {
// Aether is not loaded
}
if (!loadedAether) {
File launcherAssets = new File(directories.getAssetsDirectory(), "launcher");
File aether = new File(launcherAssets, "aether-dep.jar");
try {
Method m = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
m.setAccessible(true);
m.invoke(ClassLoader.getSystemClassLoader(), aether.toURI().toURL());
} catch (NoSuchMethodException ex) {
ex.printStackTrace();
} catch (InvocationTargetException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (MalformedURLException ex) {
ex.printStackTrace();
}
}
JavaVersionRepository javaVersions = new JavaVersionRepository();
(new InstalledJavaSource()).enumerateVersions(javaVersions);
FileJavaSource javaVersionFile = FileJavaSource.load(new File(settings.getTechnicRoot(), "javaVersions.json"));
javaVersionFile.enumerateVersions(javaVersions);
javaVersions.selectVersion(settings.getJavaVersion(), settings.getJavaBitness());
IUserStore<MojangUser> users = TechnicUserStore.load(new File(directories.getLauncherDirectory(), "users.json"));
UserModel userModel = new UserModel(users, new AuthenticationService());
MirrorStore mirrorStore = new MirrorStore(userModel);
mirrorStore.addSecureMirror("mirror.technicpack.net", new JsonWebSecureMirror("http://mirror.technicpack.net/", "mirror.technicpack.net"));
IModpackResourceType iconType = new IconResourceType();
IModpackResourceType logoType = new LogoResourceType();
IModpackResourceType backgroundType = new BackgroundResourceType();
PackResourceMapper iconMapper = new PackResourceMapper(directories, resources.getImage("icon.png"), iconType);
ImageRepository<ModpackModel> iconRepo = new ImageRepository<ModpackModel>(iconMapper, new PackImageStore(iconType, mirrorStore, userModel));
ImageRepository<ModpackModel> logoRepo = new ImageRepository<ModpackModel>(new PackResourceMapper(directories, resources.getImage("modpack/ModImageFiller.png"), logoType), new PackImageStore(logoType, mirrorStore, userModel));
ImageRepository<ModpackModel> backgroundRepo = new ImageRepository<ModpackModel>(new PackResourceMapper(directories, null, backgroundType), new PackImageStore(backgroundType, mirrorStore, userModel));
ImageRepository<IUserType> skinRepo = new ImageRepository<IUserType>(new TechnicFaceMapper(directories, resources), new CrafatarFaceImageStore("http://crafatar.com/", mirrorStore));
ImageRepository<AuthorshipInfo> avatarRepo = new ImageRepository<AuthorshipInfo>(new TechnicAvatarMapper(directories, resources), new WebAvatarImageStore(mirrorStore));
HttpSolderApi httpSolder = new HttpSolderApi(settings.getClientId(), userModel);
ISolderApi solder = new CachedSolderApi(directories, httpSolder, 60 * 60);
HttpPlatformApi httpPlatform = new HttpPlatformApi("http://api.technicpack.net/", mirrorStore, buildNumber.getBuildNumber());
IPlatformApi platform = new ModpackCachePlatformApi(httpPlatform, 60 * 60, directories);
IPlatformSearchApi platformSearch = new HttpPlatformSearchApi("http://api.technicpack.net/", buildNumber.getBuildNumber());
IInstalledPackRepository packStore = TechnicInstalledPackStore.load(new File(directories.getLauncherDirectory(), "installedPacks"));
IAuthoritativePackSource packInfoRepository = new PlatformPackInfoRepository(platform, solder);
ArrayList<IMigrator> migrators = new ArrayList<IMigrator>(1);
migrators.add(new InitialV3Migrator(platform));
SettingsFactory.migrateSettings(settings, packStore, directories, users, migrators);
PackLoader packList = new PackLoader(directories, packStore, packInfoRepository);
ModpackSelector selector = new ModpackSelector(resources, packList, new SolderPackSource("http://solder.technicpack.net/api/", solder), solder, platform, platformSearch, iconRepo);
selector.setBorder(BorderFactory.createEmptyBorder());
userModel.addAuthListener(selector);
resources.registerResource(selector);
DiscoverInfoPanel discoverInfoPanel = new DiscoverInfoPanel(resources, startupParameters.getDiscoverUrl(), platform, directories, selector);
MinecraftLauncher launcher = new MinecraftLauncher(platform, directories, userModel, javaVersions);
ModpackInstaller modpackInstaller = new ModpackInstaller(platform, settings.getClientId());
Installer installer = new Installer(startupParameters, mirrorStore, directories, modpackInstaller, launcher, settings, iconMapper);
IDiscordApi discordApi = new HttpDiscordApi("https://discordapp.com/api/");
discordApi = new CacheDiscordApi(discordApi, 600, 60);
final LauncherFrame frame = new LauncherFrame(resources, skinRepo, userModel, settings, selector, iconRepo, logoRepo, backgroundRepo, installer, avatarRepo, platform, directories, packStore, startupParameters, discoverInfoPanel, javaVersions, javaVersionFile, buildNumber, discordApi);
userModel.addAuthListener(frame);
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
splash.dispose();
if (settings.getLaunchToModpacks())
frame.selectTab("modpacks");
}
};
discoverInfoPanel.setLoadListener(listener);
LoginFrame login = new LoginFrame(resources, settings, userModel, skinRepo);
userModel.addAuthListener(login);
userModel.addAuthListener(new IAuthListener() {
@Override
public void userChanged(Object user) {
if (user == null)
splash.dispose();
}
});
userModel.initAuth();
Utils.sendTracking("runLauncher", "run", buildNumber.getBuildNumber(), settings.getClientId());
}
use of net.technicpack.launchercore.modpacks.sources.IAuthoritativePackSource in project LauncherV3 by TechnicPack.
the class LauncherMain method startLauncher.
private static void startLauncher(final TechnicSettings settings, StartupParameters startupParameters, final LauncherDirectories directories, ResourceLoader resources) {
UIManager.put("ComboBox.disabledBackground", LauncherFrame.COLOR_FORMELEMENT_INTERNAL);
UIManager.put("ComboBox.disabledForeground", LauncherFrame.COLOR_GREY_TEXT);
System.setProperty("xr.load.xml-reader", "org.ccil.cowan.tagsoup.Parser");
// Remove all log files older than a week
new Thread(() -> {
Iterator<File> files = FileUtils.iterateFiles(new File(directories.getLauncherDirectory(), "logs"), new String[] { "log" }, false);
while (files.hasNext()) {
File logFile = files.next();
if (logFile.exists() && (new DateTime(logFile.lastModified())).isBefore(DateTime.now().minusWeeks(1))) {
logFile.delete();
}
}
}).start();
final SplashScreen splash = new SplashScreen(resources.getImage("launch_splash.png"), 0);
Color bg = LauncherFrame.COLOR_FORMELEMENT_INTERNAL;
splash.getContentPane().setBackground(new Color(bg.getRed(), bg.getGreen(), bg.getBlue(), 255));
splash.pack();
splash.setLocationRelativeTo(null);
splash.setVisible(true);
JavaVersionRepository javaVersions = new JavaVersionRepository();
(new InstalledJavaSource()).enumerateVersions(javaVersions);
FileJavaSource javaVersionFile = FileJavaSource.load(new File(settings.getTechnicRoot(), "javaVersions.json"));
javaVersionFile.enumerateVersions(javaVersions);
javaVersions.selectVersion(settings.getJavaVersion(), settings.getJavaBitness());
TechnicUserStore users = TechnicUserStore.load(new File(directories.getLauncherDirectory(), "users.json"));
MicrosoftAuthenticator microsoftAuthenticator = new MicrosoftAuthenticator(new File(directories.getLauncherDirectory(), "oauth"));
MojangAuthenticator mojangAuthenticator = new MojangAuthenticator(users.getClientToken());
UserModel userModel = new UserModel(users, mojangAuthenticator, microsoftAuthenticator);
IModpackResourceType iconType = new IconResourceType();
IModpackResourceType logoType = new LogoResourceType();
IModpackResourceType backgroundType = new BackgroundResourceType();
PackResourceMapper iconMapper = new PackResourceMapper(directories, resources.getImage("icon.png"), iconType);
ImageRepository<ModpackModel> iconRepo = new ImageRepository<>(iconMapper, new PackImageStore(iconType));
ImageRepository<ModpackModel> logoRepo = new ImageRepository<>(new PackResourceMapper(directories, resources.getImage("modpack/ModImageFiller.png"), logoType), new PackImageStore(logoType));
ImageRepository<ModpackModel> backgroundRepo = new ImageRepository<>(new PackResourceMapper(directories, null, backgroundType), new PackImageStore(backgroundType));
ImageRepository<IUserType> skinRepo = new ImageRepository<>(new TechnicFaceMapper(directories, resources), new MinotarFaceImageStore("https://minotar.net/"));
ImageRepository<AuthorshipInfo> avatarRepo = new ImageRepository<>(new TechnicAvatarMapper(directories, resources), new WebAvatarImageStore());
HttpSolderApi httpSolder = new HttpSolderApi(settings.getClientId());
ISolderApi solder = new CachedSolderApi(directories, httpSolder, 60 * 60);
HttpPlatformApi httpPlatform = new HttpPlatformApi("https://api.technicpack.net/", buildNumber.getBuildNumber());
IPlatformApi platform = new ModpackCachePlatformApi(httpPlatform, 60 * 60, directories);
IPlatformSearchApi platformSearch = new HttpPlatformSearchApi("https://api.technicpack.net/", buildNumber.getBuildNumber());
IInstalledPackRepository packStore = TechnicInstalledPackStore.load(new File(directories.getLauncherDirectory(), "installedPacks"));
IAuthoritativePackSource packInfoRepository = new PlatformPackInfoRepository(platform, solder);
ArrayList<IMigrator> migrators = new ArrayList<IMigrator>(1);
migrators.add(new InitialV3Migrator(platform));
migrators.add(new ResetJvmArgsIfDefaultString());
SettingsFactory.migrateSettings(settings, packStore, directories, users, migrators);
PackLoader packList = new PackLoader(directories, packStore, packInfoRepository);
ModpackSelector selector = new ModpackSelector(resources, packList, new SolderPackSource("https://solder.technicpack.net/api/", solder), solder, platform, platformSearch, iconRepo);
selector.setBorder(BorderFactory.createEmptyBorder());
userModel.addAuthListener(selector);
resources.registerResource(selector);
DiscoverInfoPanel discoverInfoPanel = new DiscoverInfoPanel(resources, startupParameters.getDiscoverUrl(), platform, directories, selector);
MinecraftLauncher launcher = new MinecraftLauncher(platform, directories, userModel, javaVersions, buildNumber);
ModpackInstaller modpackInstaller = new ModpackInstaller(platform, settings.getClientId());
Installer installer = new Installer(startupParameters, directories, modpackInstaller, launcher, settings, iconMapper);
IDiscordApi discordApi = new HttpDiscordApi("https://discord.com/api/");
discordApi = new CacheDiscordApi(discordApi, 600, 60);
final LauncherFrame frame = new LauncherFrame(resources, skinRepo, userModel, settings, selector, iconRepo, logoRepo, backgroundRepo, installer, avatarRepo, platform, directories, packStore, startupParameters, discoverInfoPanel, javaVersions, javaVersionFile, buildNumber, discordApi);
userModel.addAuthListener(frame);
ActionListener listener = e -> {
splash.dispose();
if (settings.getLaunchToModpacks())
frame.selectTab("modpacks");
};
discoverInfoPanel.setLoadListener(listener);
LoginFrame login = new LoginFrame(resources, settings, userModel, skinRepo);
userModel.addAuthListener(login);
userModel.addAuthListener(user -> {
if (user == null)
splash.dispose();
});
userModel.startupAuth();
Utils.sendTracking("runLauncher", "run", buildNumber.getBuildNumber(), settings.getClientId());
}
Aggregations