From 03878808c70fbf2151b0735478b9febdae644ed5 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Thu, 10 Jul 2025 12:57:23 +0200 Subject: [PATCH] stage2/ml9: Support NeoForge merging ModLauncher into FancyModLoader --- .../stage2/EssentialTransformationService.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/stage2/modlauncher9/src/main/java/gg/essential/loader/stage2/EssentialTransformationService.java b/stage2/modlauncher9/src/main/java/gg/essential/loader/stage2/EssentialTransformationService.java index 15cce21..fa71e71 100644 --- a/stage2/modlauncher9/src/main/java/gg/essential/loader/stage2/EssentialTransformationService.java +++ b/stage2/modlauncher9/src/main/java/gg/essential/loader/stage2/EssentialTransformationService.java @@ -24,11 +24,16 @@ public class EssentialTransformationService implements ITransformationService { private static final Logger LOGGER = LogManager.getLogger(EssentialTransformationService.class); - private static final Map COMPATIBILITY_IMPLEMENTATIONS = Map.of( + private static final Map ML_COMPATIBILITY_IMPLEMENTATIONS = Map.of( "11.", "ML11CompatibilityLayer", "10.", "ML10CompatibilityLayer", "9.", "ML9CompatibilityLayer" ); + // NeoForge as of 1.21.7 has merged ModLauncher into FancyModLoader and reports the version of that instead of + // ModLauncher. + private static final Map FMLML_COMPATIBILITY_IMPLEMENTATIONS = Map.of( + "9.", "ML11CompatibilityLayer" + ); private static CompatibilityLayer compatibilityLayer; private final Path gameDir; @@ -82,7 +87,13 @@ public void initialize(IEnvironment environment) { @SuppressWarnings("unchecked") private CompatibilityLayer findCompatibilityLayerImpl(String mlVersion) { String implementation = null; - for (Map.Entry entry : COMPATIBILITY_IMPLEMENTATIONS.entrySet()) { + Map impls; + if ("fml_loader".equals(ITransformationService.class.getModule().getName())) { + impls = FMLML_COMPATIBILITY_IMPLEMENTATIONS; + } else { + impls = ML_COMPATIBILITY_IMPLEMENTATIONS; + } + for (Map.Entry entry : impls.entrySet()) { if (mlVersion.startsWith(entry.getKey())) { implementation = entry.getValue(); break;