diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-shared-1.18-SNAPSHOT.jar b/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-shared-1.18-SNAPSHOT.jar index 6e0abb594..a14378453 100644 Binary files a/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-shared-1.18-SNAPSHOT.jar and b/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-shared-1.18-SNAPSHOT.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-tta-1.18-SNAPSHOT.jar b/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-tta-1.18-SNAPSHOT.jar index 3ef9de7d4..715654c53 100644 Binary files a/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-tta-1.18-SNAPSHOT.jar and b/app_pojavlauncher/src/main/assets/components/caciocavallo17/cacio-tta-1.18-SNAPSHOT.jar differ diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo17/version b/app_pojavlauncher/src/main/assets/components/caciocavallo17/version index 8dbf8633f..a026ac09d 100644 --- a/app_pojavlauncher/src/main/assets/components/caciocavallo17/version +++ b/app_pojavlauncher/src/main/assets/components/caciocavallo17/version @@ -1 +1 @@ -20240411 +20251214-added-javaagent-preloader diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java index 6374c22fc..8a1be8eae 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java @@ -359,7 +359,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTouc List javaArgList = new ArrayList<>(); // Enable Caciocavallo - Tools.getCacioJavaArgs(javaArgList,runtime.javaVersion == 8); + Tools.getCacioJavaArgs(javaArgList,runtime.javaVersion == 8, this); if(javaArgs != null) { javaArgList.addAll(javaArgs); } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index 63a7ee557..a451d3a9b 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -63,6 +63,7 @@ import net.kdt.pojavlaunch.multirt.MultiRTUtils; import net.kdt.pojavlaunch.multirt.Runtime; import net.kdt.pojavlaunch.plugins.FFmpegPlugin; import net.kdt.pojavlaunch.prefs.LauncherPreferences; +import net.kdt.pojavlaunch.tasks.AsyncAssetManager; import net.kdt.pojavlaunch.utils.DateUtils; import net.kdt.pojavlaunch.utils.DownloadUtils; import net.kdt.pojavlaunch.utils.FileUtils; @@ -349,7 +350,7 @@ public final class Tools { List javaArgList = new ArrayList<>(); - getCacioJavaArgs(javaArgList, runtime.javaVersion == 8); + getCacioJavaArgs(javaArgList, runtime.javaVersion == 8, activity); if (versionInfo.logging != null) { String configFile = Tools.DIR_DATA + "/security/" + versionInfo.logging.client.file.id.replace("client", "log4j-rce-patch"); @@ -533,7 +534,7 @@ public final class Tools { } } - public static void getCacioJavaArgs(List javaArgList, boolean isJava8) { + public static void getCacioJavaArgs(List javaArgList, boolean isJava8, Activity activity) { // Caciocavallo config AWT-enabled version javaArgList.add("-Djava.awt.headless=false"); javaArgList.add("-Dcacio.managed.screensize=" + AWTCanvasView.AWT_CANVAS_WIDTH + "x" + AWTCanvasView.AWT_CANVAS_HEIGHT); @@ -544,10 +545,20 @@ public final class Tools { javaArgList.add("-Dawt.toolkit=net.java.openjdk.cacio.ctc.CTCToolkit"); javaArgList.add("-Djava.awt.graphicsenv=net.java.openjdk.cacio.ctc.CTCGraphicsEnvironment"); } else { + File caciocavavallo17Dir = new File(Tools.DIR_GAME_HOME, "caciocavallo17"); + File[] caciocavallo17Jars = caciocavavallo17Dir.listFiles((f, s) ->s.contains("cacio-tta")); + if(caciocavallo17Jars == null || caciocavallo17Jars.length < 1) { + // We wanna avoid the launch being interrupted so we extract again if it isn't found + AsyncAssetManager.unpackComponents(activity); + caciocavallo17Jars = caciocavavallo17Dir.listFiles((f, s) ->s.contains("cacio-tta")); + if(caciocavallo17Jars == null || caciocavallo17Jars.length < 1) + throw new RuntimeException("Failed to extract required assets!"); + } + javaArgList.add("-javaagent:"+caciocavallo17Jars[0].getAbsolutePath()); javaArgList.add("-Dawt.toolkit=com.github.caciocavallosilano.cacio.ctc.CTCToolkit"); javaArgList.add("-Djava.awt.graphicsenv=com.github.caciocavallosilano.cacio.ctc.CTCGraphicsEnvironment"); - javaArgList.add("-Djava.system.class.loader=com.github.caciocavallosilano.cacio.ctc.CTCPreloadClassLoader"); - + // This approach breaks kilt so we use an agent instead +// javaArgList.add("-Djava.system.class.loader=com.github.caciocavallosilano.cacio.ctc.CTCPreloadClassLoader"); javaArgList.add("--add-exports=java.desktop/java.awt=ALL-UNNAMED"); javaArgList.add("--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED"); javaArgList.add("--add-exports=java.desktop/sun.awt.image=ALL-UNNAMED");