From 07b4ea70405d601da98516e356ce48bb43e77612 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Thu, 31 Dec 2020 04:48:08 +0700 Subject: [PATCH] Try start on main thread --- .../java/net/kdt/pojavlaunch/PLaunchApp.java | 25 +++++++++++++++++-- .../net/kdt/pojavlaunch/PLaunchJFXApp.java | 9 ------- src/main/jni/jre_launcher.c | 8 +++--- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java b/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java index e62a0a55..b3036036 100644 --- a/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java +++ b/src/main/java/net/kdt/pojavlaunch/PLaunchApp.java @@ -22,10 +22,31 @@ public class PLaunchApp extends UIApplicationDelegateAdapter { Thread launchThread = new Thread() { @Override public void run() { - Application.launch(PLaunchJFXApp.class); + // Application.launch(PLaunchJFXApp.class); + + // Start Minecraft there! + File file = new File(Tools.DIR_GAME_NEW); + file.mkdirs(); + + String mcver = "1.13"; + try { + mcver = Tools.read(Tools.DIR_GAME_HOME + "/config_ver.txt"); + } catch (IOException e) { + System.out.println("config_ver.txt not found, defaulting to Minecraft 1.13"); + } + + MinecraftAccount acc = new MinecraftAccount(); + acc.selectedVersion = mcver; + JMinecraftVersionList.Version version = Tools.getVersionInfo(mcver); + + try { + Tools.launchMinecraft(acc, version); + } catch (Throwable th) { + Tools.showError(th); + } } }; - launchThread.setDaemon(true); + // launchThread.setDaemon(true); launchThread.start(); } else { WindowAlertController alertController = new WindowAlertController("Error", "OpenJDK is not installed. Please install before enter launcher.", UIAlertControllerStyle.Alert); diff --git a/src/main/java/net/kdt/pojavlaunch/PLaunchJFXApp.java b/src/main/java/net/kdt/pojavlaunch/PLaunchJFXApp.java index 886974e5..73a8ba1d 100644 --- a/src/main/java/net/kdt/pojavlaunch/PLaunchJFXApp.java +++ b/src/main/java/net/kdt/pojavlaunch/PLaunchJFXApp.java @@ -23,15 +23,6 @@ public class PLaunchJFXApp extends Application { JREUtils.saveGLContext(); -/* - Circle circ = new Circle(40, 40, 30); - Group root = new Group(circ); - Scene scene = new Scene(root, 400, 300); - stage.setTitle("PojavLauncher"); - stage.setScene(scene); - stage.show(); -*/ - // Start Minecraft there! File file = new File(Tools.DIR_GAME_NEW); file.mkdirs(); diff --git a/src/main/jni/jre_launcher.c b/src/main/jni/jre_launcher.c index a119335f..34e3a7be 100644 --- a/src/main/jni/jre_launcher.c +++ b/src/main/jni/jre_launcher.c @@ -38,13 +38,13 @@ typedef jint JNI_CreateJavaVM_func(JavaVM **pvm, void **penv, void *args); JNIEXPORT jint JNICALL Java_com_oracle_dalvik_VMLauncher_createLaunchMainJVM(JNIEnv *env, jclass clazz, jobjectArray vmArgArr, jstring mainClassStr, jobjectArray mainArgArr) { - void *libjvm = dlopen("/usr/lib/jvm/java-16-openjdk/lib/server/libjvm.dylib", RTLD_NOW + RTLD_GLOBAL); - if (libjvm == NULL) { - printf("dlopen failed to open libjvm.dylib (dlerror %s).", dlerror()); + void *libjli = dlopen("/usr/lib/jvm/java-16-openjdk/lib/libjli.dylib", RTLD_NOW + RTLD_GLOBAL); + if (libjli == NULL) { + printf("dlopen failed to open libjli.dylib (dlerror %s).", dlerror()); return -1; } - JNI_CreateJavaVM_func *jl_JNI_CreateJavaVM = (JNI_CreateJavaVM_func *) dlsym(libjvm, "JNI_CreateJavaVM"); + JNI_CreateJavaVM_func *jl_JNI_CreateJavaVM = (JNI_CreateJavaVM_func *) dlsym(libjli, "JNI_CreateJavaVM"); if (jl_JNI_CreateJavaVM == NULL) { printf("dlsym failed to get JNI_CreateJavaVM (dlerror %s).\n", dlerror()); return -2;