diff --git a/Launcher/runtime/config.js b/Launcher/runtime/config.js index 992277a5..7966e1ee 100644 --- a/Launcher/runtime/config.js +++ b/Launcher/runtime/config.js @@ -16,6 +16,12 @@ var config = { autoEnterDefault: false, // Should autoEnter be enabled by default? fullScreenDefault: false, // Should fullScreen be enabled by default? ramDefault: 1024, // Default RAM amount (0 for auto) + + jvm: { + enable: false, + jvmMustdie32Dir: "jre-8u202-win32", + jvmMustdie64Dir: "jre-8u202-win64", + } }; DirBridge.dir = DirBridge.getLauncherDir(config.dir); diff --git a/Launcher/runtime/dialog/dialog.js b/Launcher/runtime/dialog/dialog.js index 631d3744..1c23beb4 100644 --- a/Launcher/runtime/dialog/dialog.js +++ b/Launcher/runtime/dialog/dialog.js @@ -305,26 +305,51 @@ function doAuth(login, rsaPassword, auth_type) { function doUpdate(profile, pp, accessToken) { var digest = profile.isUpdateFastCheck(); overlay.swap(0, update.overlay, function(event) { - - update.resetOverlay("Обновление файлов ресурсов"); - var assetDirName = profile.getAssetDir(); - var assetDir = settings.updatesDir.resolve(assetDirName); - var assetMatcher = profile.getAssetUpdateMatcher(); - makeSetProfileRequest(profile, function() { - ClientLauncher.setProfile(profile); - makeUpdateRequest(assetDirName, assetDir, assetMatcher, digest, function(assetHDir) { - settings.putHDir(assetDirName, assetDir, assetHDir.hdir); - - update.resetOverlay("Обновление файлов клиента"); - var clientDirName = profile.getDir(); - var clientDir = settings.updatesDir.resolve(clientDirName); - var clientMatcher = profile.getClientUpdateMatcher(); - makeUpdateRequest(clientDirName, clientDir, clientMatcher, digest, function(clientHDir) { - settings.putHDir(clientDirName, clientDir, clientHDir.hdir); - doLaunchClient(assetDir, assetHDir.hdir, clientDir, clientHDir.hdir, profile, pp, accessToken); + if (config.jvm.enable) { + makeSetProfileRequest(profile, function() { + ClientLauncher.setProfile(profile); + var jvmDir = settings.updatesDir.resolve(jvmDirName); + update.resetOverlay("Обновление файлов JVM"); + makeUpdateRequest(jvmDirName, jvmDir, null, digest, function(jvmHDir) { + ClientLauncher.setJavaBinPath(jvmDir); + update.resetOverlay("Обновление файлов ресурсов"); + var assetDirName = profile.getAssetDir(); + var assetDir = settings.updatesDir.resolve(assetDirName); + var assetMatcher = profile.getAssetUpdateMatcher(); + makeUpdateRequest(assetDirName, assetDir, assetMatcher, digest, function(assetHDir) { + settings.putHDir(assetDirName, assetDir, assetHDir.hdir); + update.resetOverlay("Обновление файлов клиента"); + var clientDirName = profile.getDir(); + var clientDir = settings.updatesDir.resolve(clientDirName); + var clientMatcher = profile.getClientUpdateMatcher(); + makeUpdateRequest(clientDirName, clientDir, clientMatcher, digest, function(clientHDir) { + settings.putHDir(clientDirName, clientDir, clientHDir.hdir); + doLaunchClient(assetDir, assetHDir.hdir, clientDir, clientHDir.hdir, profile, pp, accessToken); + }); + }); }); }); - }); + } else { + update.resetOverlay("Обновление файлов ресурсов"); + var assetDirName = profile.getAssetDir(); + var assetDir = settings.updatesDir.resolve(assetDirName); + var assetMatcher = profile.getAssetUpdateMatcher(); + makeSetProfileRequest(profile, function() { + ClientLauncher.setProfile(profile); + makeUpdateRequest(assetDirName, assetDir, assetMatcher, digest, function(assetHDir) { + settings.putHDir(assetDirName, assetDir, assetHDir.hdir); + + update.resetOverlay("Обновление файлов клиента"); + var clientDirName = profile.getDir(); + var clientDir = settings.updatesDir.resolve(clientDirName); + var clientMatcher = profile.getClientUpdateMatcher(); + makeUpdateRequest(clientDirName, clientDir, clientMatcher, digest, function(clientHDir) { + settings.putHDir(clientDirName, clientDir, clientHDir.hdir); + doLaunchClient(assetDir, assetHDir.hdir, clientDir, clientHDir.hdir, profile, pp, accessToken); + }); + }); + }); + } }); } diff --git a/Launcher/runtime/init.js b/Launcher/runtime/init.js index 1db04f3b..9b1ccb43 100644 --- a/Launcher/runtime/init.js +++ b/Launcher/runtime/init.js @@ -79,6 +79,18 @@ function setRootParent(parent) { function start(args) { + if (config.jvm.enable) { + switch (JVMHelper.OS_TYPE) { + case JVMHelperOS.MUSTDIE: + jvmDirName = JVMHelper.OS_BITS === 32 ? config.jvm.jvmMustdie32Dir : + jvmDirName = JVMHelper.OS_BITS === 64 ? config.jvm.jvmMustdie64Dir : config.jvm.enable = false; + break; + default: + config.jvm.enable = false; + break; + } + } + LogHelper.debug("Setting FX properties"); java.lang.System.setProperty("prism.lcdtext", "false"); diff --git a/LauncherAPI/src/main/java/pro/gravit/launcher/profiles/ClientProfile.java b/LauncherAPI/src/main/java/pro/gravit/launcher/profiles/ClientProfile.java index 7622aa21..4762efb5 100644 --- a/LauncherAPI/src/main/java/pro/gravit/launcher/profiles/ClientProfile.java +++ b/LauncherAPI/src/main/java/pro/gravit/launcher/profiles/ClientProfile.java @@ -35,7 +35,10 @@ public enum Version { MC113("1.13", 393), MC1131("1.13.1", 401), MC1132("1.13.2", 402), - MC114("1.14", 477); + MC114("1.14", 477), + MC1141("1.14.1", 480), + MC1142("1.14.2", 485), + MC1143("1.14.3", 490); private static final Map VERSIONS; static { diff --git a/LauncherCore/src/main/java/pro/gravit/utils/helper/IOHelper.java b/LauncherCore/src/main/java/pro/gravit/utils/helper/IOHelper.java index 4864c6ed..77b34f1b 100644 --- a/LauncherCore/src/main/java/pro/gravit/utils/helper/IOHelper.java +++ b/LauncherCore/src/main/java/pro/gravit/utils/helper/IOHelper.java @@ -62,6 +62,7 @@ import pro.gravit.launcher.LauncherAPI; public final class IOHelper { + public static final long MB32 = 1 << 25; private static final class DeleteDirVisitor extends SimpleFileVisitor { private final Path dir; private final boolean self;