diff --git a/src/main/java/dev/su5ed/sinytra/connector/service/ConnectorForkJoinThreadFactory.java b/src/main/java/dev/su5ed/sinytra/connector/service/ConnectorForkJoinThreadFactory.java new file mode 100644 index 00000000..a7e9b3b6 --- /dev/null +++ b/src/main/java/dev/su5ed/sinytra/connector/service/ConnectorForkJoinThreadFactory.java @@ -0,0 +1,13 @@ +package dev.su5ed.sinytra.connector.service; + +import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.ForkJoinWorkerThread; + +public class ConnectorForkJoinThreadFactory implements ForkJoinPool.ForkJoinWorkerThreadFactory { + @Override + public ForkJoinWorkerThread newThread(ForkJoinPool pool) { + ForkJoinWorkerThread thread = ForkJoinPool.defaultForkJoinWorkerThreadFactory.newThread(pool); + thread.setContextClassLoader(Thread.currentThread().getContextClassLoader()); + return thread; + } +} diff --git a/src/main/java/dev/su5ed/sinytra/connector/service/ConnectorLoaderService.java b/src/main/java/dev/su5ed/sinytra/connector/service/ConnectorLoaderService.java index e18cc3ec..f3fad136 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/service/ConnectorLoaderService.java +++ b/src/main/java/dev/su5ed/sinytra/connector/service/ConnectorLoaderService.java @@ -38,6 +38,7 @@ public void initialize(IEnvironment environment) { FMLLoader.progressWindowTick = original; original.run(); }; + System.setProperty("java.util.concurrent.ForkJoinPool.common.threadFactory", ConnectorForkJoinThreadFactory.class.getName()); } @SuppressWarnings("unchecked") diff --git a/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java b/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java index 81cb55be..309d861d 100644 --- a/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java +++ b/src/main/java/dev/su5ed/sinytra/connector/transformer/MixinPatchTransformer.java @@ -78,6 +78,12 @@ public class MixinPatchTransformer implements Transformer { .targetInjectionPoint("Lnet/fabricmc/loader/impl/game/minecraft/Hooks;startServer(Ljava/io/File;Ljava/lang/Object;)V") .modifyInjectionPoint("Lnet/minecraftforge/server/loading/ServerModLoader;load()V") .build(), + Patch.builder() + .targetClass("net/minecraft/client/gui/screens/TitleScreen") + .targetMethod("m_88315_(Lnet/minecraft/client/gui/GuiGraphics;IIF)V") + .targetInjectionPoint("Lnet/minecraft/client/gui/GuiGraphics;m_280488_(Lnet/minecraft/client/gui/Font;Ljava/lang/String;III)I") + .modifyTarget("lambda$render$12", "lambda$render$13") + .build(), Patch.builder() .targetClass("net/minecraft/world/entity/player/Player") .targetMethod("m_6728_") @@ -293,6 +299,7 @@ public class MixinPatchTransformer implements Transformer { .targetMethod("m_109093_(FJZ)V") .targetInjectionPoint("Lnet/minecraft/client/gui/screens/Screen;m_280264_(Lnet/minecraft/client/gui/GuiGraphics;IIF)V") .modifyInjectionPoint("Lnet/minecraftforge/client/ForgeHooksClient;drawScreen(Lnet/minecraft/client/gui/screens/Screen;Lnet/minecraft/client/gui/GuiGraphics;IIF)V") + .modifyVariableIndex(0, 1) .build(), Patch.builder() .targetClass("net/minecraft/client/renderer/entity/BoatRenderer")