Search in sources :

Example 1 with TechnicSettings

use of net.technicpack.launcher.settings.TechnicSettings in project LauncherV3 by TechnicPack.

the class LauncherMain method main.

public static void main(String[] argv) {
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (Exception ex) {
        Utils.getLogger().log(Level.SEVERE, ex.getMessage(), ex);
    }
    ToolTipManager.sharedInstance().setDismissDelay(Integer.MAX_VALUE);
    StartupParameters params = new StartupParameters(argv);
    try {
        JCommander.newBuilder().addObject(params).build().parse(argv);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    TechnicSettings settings = null;
    try {
        settings = SettingsFactory.buildSettingsObject(Relauncher.getRunningPath(LauncherMain.class), params.isMover());
    } catch (UnsupportedEncodingException ex) {
        ex.printStackTrace();
    }
    if (settings == null) {
        ResourceLoader installerResources = new ResourceLoader(null, "net", "technicpack", "launcher", "resources");
        installerResources.setSupportedLanguages(supportedLanguages);
        installerResources.setLocale(ResourceLoader.DEFAULT_LOCALE);
        InstallerFrame dialog = new InstallerFrame(installerResources, params);
        dialog.setVisible(true);
        return;
    }
    LauncherDirectories directories = new TechnicLauncherDirectories(settings.getTechnicRoot());
    ResourceLoader resources = new ResourceLoader(directories, "net", "technicpack", "launcher", "resources");
    resources.setSupportedLanguages(supportedLanguages);
    resources.setLocale(settings.getLanguageCode());
    // Sanity check
    checkIfRunningInsideOneDrive(directories.getLauncherDirectory());
    if (params.getBuildNumber() != null && !params.getBuildNumber().isEmpty())
        buildNumber = new CommandLineBuildNumber(params);
    else
        buildNumber = new VersionFileBuildNumber(resources);
    TechnicConstants.setBuildNumber(buildNumber);
    setupLogging(directories, resources);
    String launcherBuild = buildNumber.getBuildNumber();
    int build = -1;
    try {
        build = Integer.parseInt((new VersionFileBuildNumber(resources)).getBuildNumber());
    } catch (NumberFormatException ex) {
    // This is probably a debug build or something, build number is invalid
    }
    // These 2 need to happen *before* the launcher or the updater run so we have valuable debug information and so
    // we can properly use websites that use Let's Encrypt (and other current certs not supported by old Java versions)
    runStartupDebug();
    injectNewRootCerts();
    Relauncher launcher = new TechnicRelauncher(new HttpUpdateStream("https://api.technicpack.net/launcher/"), settings.getBuildStream() + "4", build, directories, resources, params);
    try {
        if (launcher.runAutoUpdater())
            startLauncher(settings, params, directories, resources);
    } catch (InterruptedException e) {
    // Canceled by user
    } catch (DownloadException e) {
    // JOptionPane.showMessageDialog(null, resources.getString("launcher.updateerror.download", pack.getDisplayName(), e.getMessage()), resources.getString("launcher.installerror.title"), JOptionPane.WARNING_MESSAGE);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Also used : VersionFileBuildNumber(net.technicpack.launcher.autoupdate.VersionFileBuildNumber) ResourceLoader(net.technicpack.ui.lang.ResourceLoader) LauncherDirectories(net.technicpack.launchercore.install.LauncherDirectories) ResetJvmArgsIfDefaultString(net.technicpack.launcher.settings.migration.ResetJvmArgsIfDefaultString) KeyStoreException(java.security.KeyStoreException) KeyManagementException(java.security.KeyManagementException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) DownloadException(net.technicpack.launchercore.exception.DownloadException) CertificateException(java.security.cert.CertificateException) UnknownHostException(java.net.UnknownHostException) HttpUpdateStream(net.technicpack.autoupdate.http.HttpUpdateStream) Relauncher(net.technicpack.autoupdate.Relauncher) TechnicRelauncher(net.technicpack.launcher.autoupdate.TechnicRelauncher) DownloadException(net.technicpack.launchercore.exception.DownloadException) TechnicRelauncher(net.technicpack.launcher.autoupdate.TechnicRelauncher) TechnicSettings(net.technicpack.launcher.settings.TechnicSettings) InstallerFrame(net.technicpack.launcher.ui.InstallerFrame) StartupParameters(net.technicpack.launcher.settings.StartupParameters) CommandLineBuildNumber(net.technicpack.launcher.autoupdate.CommandLineBuildNumber)

Example 2 with TechnicSettings

use of net.technicpack.launcher.settings.TechnicSettings 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());
}
Also used : PackImageStore(net.technicpack.launchercore.modpacks.resources.PackImageStore) CommandLineBuildNumber(net.technicpack.launcher.autoupdate.CommandLineBuildNumber) IModpackResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.IModpackResourceType) Utils(net.technicpack.utilslib.Utils) SSLContext(javax.net.ssl.SSLContext) IPlatformApi(net.technicpack.platform.IPlatformApi) JavaVersionRepository(net.technicpack.launchercore.launch.java.JavaVersionRepository) IconResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.IconResourceType) LoggerOutputStream(net.technicpack.ui.components.LoggerOutputStream) JavaUtils(net.technicpack.utilslib.JavaUtils) HttpPlatformApi(net.technicpack.platform.http.HttpPlatformApi) KeyStoreException(java.security.KeyStoreException) MinecraftLauncher(net.technicpack.minecraftcore.launch.MinecraftLauncher) IInstalledPackRepository(net.technicpack.launchercore.modpacks.sources.IInstalledPackRepository) InetAddress(java.net.InetAddress) ResetJvmArgsIfDefaultString(net.technicpack.launcher.settings.migration.ResetJvmArgsIfDefaultString) IDiscordApi(net.technicpack.discord.IDiscordApi) HttpPlatformSearchApi(net.technicpack.platform.http.HttpPlatformSearchApi) WebAvatarImageStore(net.technicpack.launchercore.image.face.WebAvatarImageStore) InstallerFrame(net.technicpack.launcher.ui.InstallerFrame) ConsoleFrame(net.technicpack.ui.components.ConsoleFrame) Path(java.nio.file.Path) RotatingFileHandler(net.technicpack.launchercore.logging.RotatingFileHandler) PackResourceMapper(net.technicpack.launchercore.modpacks.resources.PackResourceMapper) SettingsFactory(net.technicpack.launcher.settings.SettingsFactory) ISolderApi(net.technicpack.solder.ISolderApi) TrustManagerFactory(javax.net.ssl.TrustManagerFactory) CacheDiscordApi(net.technicpack.discord.CacheDiscordApi) ConsoleHandler(net.technicpack.ui.components.ConsoleHandler) KeyStore(java.security.KeyStore) Relauncher(net.technicpack.autoupdate.Relauncher) TechnicSettings(net.technicpack.launcher.settings.TechnicSettings) InitialV3Migrator(net.technicpack.launcher.settings.migration.InitialV3Migrator) HttpSolderApi(net.technicpack.solder.http.HttpSolderApi) KeyManagementException(java.security.KeyManagementException) Logger(java.util.logging.Logger) BuildLogFormatter(net.technicpack.launchercore.logging.BuildLogFormatter) Collectors(java.util.stream.Collectors) BackgroundResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.BackgroundResourceType) Certificate(java.security.cert.Certificate) IMigrator(net.technicpack.launcher.settings.migration.IMigrator) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) Installer(net.technicpack.launcher.launch.Installer) SplashScreen(net.technicpack.ui.controls.installation.SplashScreen) FileJavaSource(net.technicpack.launchercore.launch.java.source.FileJavaSource) Handler(java.util.logging.Handler) HttpDiscordApi(net.technicpack.discord.HttpDiscordApi) ModpackSelector(net.technicpack.launcher.ui.components.modpacks.ModpackSelector) UserModel(net.technicpack.launchercore.auth.UserModel) IAuthoritativePackSource(net.technicpack.launchercore.modpacks.sources.IAuthoritativePackSource) MinotarFaceImageStore(net.technicpack.launchercore.image.face.MinotarFaceImageStore) java.util(java.util) ActionListener(java.awt.event.ActionListener) MicrosoftAuthenticator(net.technicpack.minecraftcore.microsoft.auth.MicrosoftAuthenticator) ResourceLoader(net.technicpack.ui.lang.ResourceLoader) StartupParameters(net.technicpack.launcher.settings.StartupParameters) Level(java.util.logging.Level) IUserStore(net.technicpack.launchercore.auth.IUserStore) LauncherFrame(net.technicpack.launcher.ui.LauncherFrame) DownloadException(net.technicpack.launchercore.exception.DownloadException) IPlatformSearchApi(net.technicpack.platform.IPlatformSearchApi) HttpUpdateStream(net.technicpack.autoupdate.http.HttpUpdateStream) IUserType(net.technicpack.launchercore.auth.IUserType) DiscoverInfoPanel(net.technicpack.launcher.ui.components.discover.DiscoverInfoPanel) ModpackCachePlatformApi(net.technicpack.platform.cache.ModpackCachePlatformApi) PackLoader(net.technicpack.launchercore.modpacks.PackLoader) AuthorshipInfo(net.technicpack.platform.io.AuthorshipInfo) net.technicpack.launcher.io(net.technicpack.launcher.io) LogoResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.LogoResourceType) Console(net.technicpack.ui.components.Console) HttpsURLConnection(javax.net.ssl.HttpsURLConnection) CachedSolderApi(net.technicpack.solder.cache.CachedSolderApi) InstalledJavaSource(net.technicpack.launchercore.launch.java.source.InstalledJavaSource) ModpackModel(net.technicpack.launchercore.modpacks.ModpackModel) Files(java.nio.file.Files) IBuildNumber(net.technicpack.autoupdate.IBuildNumber) TechnicRelauncher(net.technicpack.launcher.autoupdate.TechnicRelauncher) JCommander(com.beust.jcommander.JCommander) DateTime(org.joda.time.DateTime) PlatformPackInfoRepository(net.technicpack.platform.PlatformPackInfoRepository) FileUtils(org.apache.commons.io.FileUtils) CertificateException(java.security.cert.CertificateException) UnknownHostException(java.net.UnknownHostException) VersionFileBuildNumber(net.technicpack.launcher.autoupdate.VersionFileBuildNumber) MojangAuthenticator(net.technicpack.minecraftcore.mojang.auth.MojangAuthenticator) java.awt(java.awt) ModpackInstaller(net.technicpack.launchercore.install.ModpackInstaller) LoginFrame(net.technicpack.launcher.ui.LoginFrame) java.io(java.io) Paths(java.nio.file.Paths) ImageRepository(net.technicpack.launchercore.image.ImageRepository) LauncherDirectories(net.technicpack.launchercore.install.LauncherDirectories) SolderPackSource(net.technicpack.solder.SolderPackSource) TechnicConstants(net.technicpack.launchercore.TechnicConstants) OperatingSystem(net.technicpack.utilslib.OperatingSystem) javax.swing(javax.swing) DiscoverInfoPanel(net.technicpack.launcher.ui.components.discover.DiscoverInfoPanel) MinotarFaceImageStore(net.technicpack.launchercore.image.face.MinotarFaceImageStore) PackLoader(net.technicpack.launchercore.modpacks.PackLoader) HttpPlatformApi(net.technicpack.platform.http.HttpPlatformApi) ResetJvmArgsIfDefaultString(net.technicpack.launcher.settings.migration.ResetJvmArgsIfDefaultString) LogoResourceType(net.technicpack.launchercore.modpacks.resources.resourcetype.LogoResourceType) DateTime(org.joda.time.DateTime) IAuthoritativePackSource(net.technicpack.launchercore.modpacks.sources.IAuthoritativePackSource) ImageRepository(net.technicpack.launchercore.image.ImageRepository) 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) MinecraftLauncher(net.technicpack.minecraftcore.launch.MinecraftLauncher) FileJavaSource(net.technicpack.launchercore.launch.java.source.FileJavaSource) IPlatformApi(net.technicpack.platform.IPlatformApi) IDiscordApi(net.technicpack.discord.IDiscordApi) WebAvatarImageStore(net.technicpack.launchercore.image.face.WebAvatarImageStore) ActionListener(java.awt.event.ActionListener) MicrosoftAuthenticator(net.technicpack.minecraftcore.microsoft.auth.MicrosoftAuthenticator) PackImageStore(net.technicpack.launchercore.modpacks.resources.PackImageStore) ModpackCachePlatformApi(net.technicpack.platform.cache.ModpackCachePlatformApi) HttpPlatformSearchApi(net.technicpack.platform.http.HttpPlatformSearchApi) PlatformPackInfoRepository(net.technicpack.platform.PlatformPackInfoRepository) Installer(net.technicpack.launcher.launch.Installer) ModpackInstaller(net.technicpack.launchercore.install.ModpackInstaller) MojangAuthenticator(net.technicpack.minecraftcore.mojang.auth.MojangAuthenticator) JavaVersionRepository(net.technicpack.launchercore.launch.java.JavaVersionRepository) UserModel(net.technicpack.launchercore.auth.UserModel) SolderPackSource(net.technicpack.solder.SolderPackSource) ModpackInstaller(net.technicpack.launchercore.install.ModpackInstaller) 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) ResetJvmArgsIfDefaultString(net.technicpack.launcher.settings.migration.ResetJvmArgsIfDefaultString) 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)

Aggregations

UnknownHostException (java.net.UnknownHostException)2 KeyManagementException (java.security.KeyManagementException)2 KeyStoreException (java.security.KeyStoreException)2 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)2 CertificateException (java.security.cert.CertificateException)2 Relauncher (net.technicpack.autoupdate.Relauncher)2 HttpUpdateStream (net.technicpack.autoupdate.http.HttpUpdateStream)2 CommandLineBuildNumber (net.technicpack.launcher.autoupdate.CommandLineBuildNumber)2 TechnicRelauncher (net.technicpack.launcher.autoupdate.TechnicRelauncher)2 VersionFileBuildNumber (net.technicpack.launcher.autoupdate.VersionFileBuildNumber)2 StartupParameters (net.technicpack.launcher.settings.StartupParameters)2 TechnicSettings (net.technicpack.launcher.settings.TechnicSettings)2 JCommander (com.beust.jcommander.JCommander)1 java.awt (java.awt)1 ActionListener (java.awt.event.ActionListener)1 java.io (java.io)1 InetAddress (java.net.InetAddress)1 Files (java.nio.file.Files)1 Path (java.nio.file.Path)1 Paths (java.nio.file.Paths)1