Search in sources :

Example 1 with HttpDiscordApi

use of net.technicpack.discord.HttpDiscordApi 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());
}
Also used : MalformedURLException(java.net.MalformedURLException) DiscoverInfoPanel(net.technicpack.launcher.ui.components.discover.DiscoverInfoPanel) PackLoader(net.technicpack.launchercore.modpacks.PackLoader) ActionEvent(java.awt.event.ActionEvent) ArrayList(java.util.ArrayList) HttpPlatformApi(net.technicpack.platform.http.HttpPlatformApi) LogoResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.LogoResourceType) DateTime(org.joda.time.DateTime) MirrorStore(net.technicpack.launchercore.mirror.MirrorStore) IAuthoritativePackSource(net.technicpack.launchercore.modpacks.sources.IAuthoritativePackSource) ImageRepository(net.technicpack.launchercore.image.ImageRepository) MojangUser(net.technicpack.minecraftcore.mojang.auth.MojangUser) BackgroundResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.BackgroundResourceType) PackResourceMapper(net.technicpack.launchercore.modpacks.resources.PackResourceMapper) AuthorshipInfo(net.technicpack.platform.io.AuthorshipInfo) IInstalledPackRepository(net.technicpack.launchercore.modpacks.sources.IInstalledPackRepository) CachedSolderApi(net.technicpack.solder.cache.CachedSolderApi) IMigrator(net.technicpack.launcher.settings.migration.IMigrator) LauncherFrame(net.technicpack.launcher.ui.LauncherFrame) Method(java.lang.reflect.Method) MinecraftLauncher(net.technicpack.minecraftcore.launch.MinecraftLauncher) FileJavaSource(net.technicpack.launchercore.launch.java.source.FileJavaSource) InvocationTargetException(java.lang.reflect.InvocationTargetException) IPlatformApi(net.technicpack.platform.IPlatformApi) IDiscordApi(net.technicpack.discord.IDiscordApi) WebAvatarImageStore(net.technicpack.launchercore.image.face.WebAvatarImageStore) ActionListener(java.awt.event.ActionListener) JsonWebSecureMirror(net.technicpack.launchercore.mirror.secure.rest.JsonWebSecureMirror) PackImageStore(net.technicpack.launchercore.modpacks.resources.PackImageStore) ModpackCachePlatformApi(net.technicpack.platform.cache.ModpackCachePlatformApi) File(java.io.File) HttpPlatformSearchApi(net.technicpack.platform.http.HttpPlatformSearchApi) PlatformPackInfoRepository(net.technicpack.platform.PlatformPackInfoRepository) Installer(net.technicpack.launcher.launch.Installer) ModpackInstaller(net.technicpack.launchercore.install.ModpackInstaller) IAuthListener(net.technicpack.launchercore.auth.IAuthListener) JavaVersionRepository(net.technicpack.launchercore.launch.java.JavaVersionRepository) UserModel(net.technicpack.launchercore.auth.UserModel) SolderPackSource(net.technicpack.solder.SolderPackSource) ModpackInstaller(net.technicpack.launchercore.install.ModpackInstaller) CrafatarFaceImageStore(net.technicpack.launchercore.image.face.CrafatarFaceImageStore) SplashScreen(net.technicpack.ui.controls.installation.SplashScreen) ISolderApi(net.technicpack.solder.ISolderApi) LoginFrame(net.technicpack.launcher.ui.LoginFrame) ModpackSelector(net.technicpack.launcher.ui.components.modpacks.ModpackSelector) HttpSolderApi(net.technicpack.solder.http.HttpSolderApi) IconResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.IconResourceType) InitialV3Migrator(net.technicpack.launcher.settings.migration.InitialV3Migrator) InstalledJavaSource(net.technicpack.launchercore.launch.java.source.InstalledJavaSource) IUserType(net.technicpack.launchercore.auth.IUserType) IPlatformSearchApi(net.technicpack.platform.IPlatformSearchApi) ModpackModel(net.technicpack.launchercore.modpacks.ModpackModel) HttpDiscordApi(net.technicpack.discord.HttpDiscordApi) CacheDiscordApi(net.technicpack.discord.CacheDiscordApi) IModpackResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.IModpackResourceType) AuthenticationService(net.technicpack.minecraftcore.mojang.auth.AuthenticationService)

Aggregations

ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 File (java.io.File)1 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 Method (java.lang.reflect.Method)1 MalformedURLException (java.net.MalformedURLException)1 ArrayList (java.util.ArrayList)1 CacheDiscordApi (net.technicpack.discord.CacheDiscordApi)1 HttpDiscordApi (net.technicpack.discord.HttpDiscordApi)1 IDiscordApi (net.technicpack.discord.IDiscordApi)1 Installer (net.technicpack.launcher.launch.Installer)1 IMigrator (net.technicpack.launcher.settings.migration.IMigrator)1 InitialV3Migrator (net.technicpack.launcher.settings.migration.InitialV3Migrator)1 LauncherFrame (net.technicpack.launcher.ui.LauncherFrame)1 LoginFrame (net.technicpack.launcher.ui.LoginFrame)1 DiscoverInfoPanel (net.technicpack.launcher.ui.components.discover.DiscoverInfoPanel)1 ModpackSelector (net.technicpack.launcher.ui.components.modpacks.ModpackSelector)1 IAuthListener (net.technicpack.launchercore.auth.IAuthListener)1 IUserType (net.technicpack.launchercore.auth.IUserType)1 UserModel (net.technicpack.launchercore.auth.UserModel)1