diff --git a/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java b/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java index 5fbe1c36..73b5eb8d 100644 --- a/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java +++ b/common/src/main/java/org/embeddedt/modernfix/core/ModernFixMixinPlugin.java @@ -87,9 +87,21 @@ public class ModernFixMixinPlugin implements IMixinConfigPlugin { t.setDaemon(true); t.start(); } + + if (ModernFixPlatformHooks.INSTANCE.isClient() && ModernFixMixinPlugin.instance.isOptionEnabled("perf.thread_priorities.AdjustThreadCount")) { + computeBetterThreadCount(); + } } } + private void computeBetterThreadCount() { + // Server thread + client thread + GC thread + int reservedCores = 3; + int availableBackgroundCores = Math.max(1, Runtime.getRuntime().availableProcessors() - reservedCores); + logger.info("Configuring Minecraft's max.bg.threads option with {} threads", availableBackgroundCores); + System.setProperty("max.bg.threads", String.valueOf(availableBackgroundCores)); + } + @Override public void onLoad(String mixinPackage) {