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;