From 7f7e53553a97766c059fe5a77ab5814d85bfd787 Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Sat, 24 Feb 2024 18:42:07 +0800 Subject: [PATCH] add a wrapper to catch some uncaught exception --- FCL/src/main/assets/game/MioLaunchWrapper.jar | Bin 0 -> 1724 bytes .../com/tungsten/fcl/game/LauncherHelper.java | 8 ++++++++ .../tungsten/fclcore/launch/DefaultLauncher.java | 3 ++- .../com/tungsten/fclauncher/utils/FCLPath.java | 2 ++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 FCL/src/main/assets/game/MioLaunchWrapper.jar diff --git a/FCL/src/main/assets/game/MioLaunchWrapper.jar b/FCL/src/main/assets/game/MioLaunchWrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..6b1846dec9528d928374b27d8baaffdebe68171a GIT binary patch literal 1724 zcmZ{kdpr|r7{`T1&CE=4i)gcyP2`^2uobg%oBLgzbx35Q#7fGos5nuY8YP#O$o)f0 zZk^WLSF+5l774K?a?sg2eLCrL&hviW=Xu}H`}@7m^VioACnhc@A|fd%0{_FqLqrgw z!X$_df{n+xqLFs{u{vTRj%$R){DSTJ0)d`j3+(?2@#y__Sd5D+3XlDSXFhkpAyGXb z9CAk|v#Zj17i;$jmxpIE`;K?oX`^bK|LkD)19j}Rx9>xaamTo#KXsvItsO^P&?W5m z@HLYNHQcIQOt#?BSuii;yT&~-Fe2hmBr5nwAc+)DcQN|_oqf$;+3 zCC|%$DC~BV@j|y?#4u@YIT2@&>dHpX@3R$;$MM>Z-PN)9^6F`gMR&%Q`TJn{qPy{= zr8=1iod6VEe^$Rt|412LnF{~9%m<#q)e))kEr7B&NlHUy=;WpptJ(xfET}OtW_@pn zDpcV?o46*3(tHXqw6}dE+CG5Yq%H*<)R$?wm|z-5b*r?W0@t#3A!hRvj4hlMjA}z? zE1D2W1@2Rg)4qK&`(fcB-N}^oCHcBx$ja-6wQy)z(@z+W{NP5X>P?DAy$)^ys zc}GI6-Z9!J%vkf_Uhimm$q?3n>{bV4LuZm6Myq-d&hB-^An+ws{4 z=49F8@9+mJ0<43sV9Is$HM7gL18&qMZUQCyH9 zH)@KGs1X|Owhqm6u};11*6%wx(nMETLIdOU6M0f-+aZv_%}Q^@j?~hyuG&s5d&;{? zU*J5@#^q7_oPLZs#h~*_C!$-G1Zh^xaPs#^%rVJ@i*^>|k&vblWpRr!yk?5TO%0af z3u863YSx#O61VT2W zjhA-f9eNi1$mruqrzH`W+hKa#M|bjU6z0Y^(Mc$7=7U21r~9Hy>6WU29vM8_L2xKA zgJkxEVQj~j`)Fc=B$kY;7*y|;-BQP-`W-TsNCoSHT4)pqulFrJGeG6p z9gJ>0s6HdRkP;4gymuL=X$ucKr|KKz^eCDNZGbYKN~f#mzAC=PtjO68E|b*t7DxV-3R{aq9s>iMU`*3Toqe;q7mzNXb6{ literal 0 HcmV?d00001 diff --git a/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java b/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java index 8b9b3d24..cc2e5d55 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java @@ -150,6 +150,14 @@ public final class LauncherHelper { } return null; }) + .thenComposeAsync(() -> { + try (InputStream input = LauncherHelper.class.getResourceAsStream("/assets/game/MioLaunchWrapper.jar")) { + Files.copy(input, new File(FCLPath.MIO_LAUNCH_WRAPPER).toPath(), StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + Logging.LOG.log(Level.WARNING, "Unable to unpack MioLaunchWrapper.jar", e); + } + return null; + }) .thenComposeAsync(() -> gameVersion.map(s -> new GameVerificationFixTask(dependencyManager, s, version.get())).orElse(null)) .thenComposeAsync(() -> logIn(context, account).withStage("launch.state.logging_in")) .thenComposeAsync(authInfo -> Task.supplyAsync(() -> { diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java b/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java index 064a2903..f2d46272 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/launch/DefaultLauncher.java @@ -168,7 +168,7 @@ public class DefaultLauncher extends Launcher { } Set classpath = repository.getClasspath(version); - + classpath.add(FCLPath.MIO_LAUNCH_WRAPPER); File jar = new File(repository.getVersionRoot(version.getId()), version.getId() + ".jar"); // if (!jar.exists() || !jar.isFile()) // throw new IOException("Minecraft jar does not exist"); @@ -192,6 +192,7 @@ public class DefaultLauncher extends Launcher { res.add("-javaagent:" + javaAgent); } + res.add("mio.Wrapper"); res.add(version.getMainClass()); res.addAll(Arguments.parseStringArguments(version.getMinecraftArguments().map(StringUtils::tokenize).orElseGet(ArrayList::new), configuration)); diff --git a/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java b/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java index c4a7e167..b34dc468 100644 --- a/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java +++ b/FCLauncher/src/main/java/com/tungsten/fclauncher/utils/FCLPath.java @@ -34,6 +34,7 @@ public class FCLPath { public static String AUTHLIB_INJECTOR_PATH; public static String MULTIPLAYER_FIX_PATH; + public static String MIO_LAUNCH_WRAPPER; public static String LT_BACKGROUND_PATH; public static String DK_BACKGROUND_PATH; @@ -64,6 +65,7 @@ public class FCLPath { AUTHLIB_INJECTOR_PATH = PLUGIN_DIR + "/authlib-injector.jar"; MULTIPLAYER_FIX_PATH = PLUGIN_DIR + "/MultiplayerFix.jar"; + MIO_LAUNCH_WRAPPER = PLUGIN_DIR + "/MioLaunchWrapper.jar"; LT_BACKGROUND_PATH = BACKGROUND_DIR + "/lt.png"; DK_BACKGROUND_PATH = BACKGROUND_DIR + "/dk.png";