Allow some mods for MinecraftForge 47.3.10+ run on NeoForge 47.1.x
MinecraftForge 1.20.1-47.3.10 introduced a new feature: allowing the mod entry class constructor to obtain an FMLJavaModLoadingContext as a parameter, whereas NeoForge 47.1.x at the same time did not support such a mod constructor.
This mod adds the classic parameterless constructor to these mods through bytecode modifications.
Fix these errors:
-- Head --
Thread: Render thread
Stacktrace:
at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:109) ~[language-java-47.2.2.jar%23416!/:47.2] {}
-- MOD somemod --
Details:
Mod File: <.minecraft>/mods/<somemod>-1.20.1-Forge.jar
Failure message: Some Mod (somemod) has failed to load correctly
java.lang.RuntimeException: Could not find mod constructor. Allowed optional argument classes: ModContainer, IEventBus, FMLModContainer
Mod Version: 1.1.4514
Mod Issue URL: https://example.com/
Exception message: java.lang.RuntimeException: Could not find mod constructor. Allowed optional argument classes: ModContainer, IEventBus, FMLModContainer
Stacktrace:
at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:109) ~[language-java-47.2.2.jar%23416!/:47.2] {}
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[core-47.2.2.jar%23415!/:47.2] {re:mixin}
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) ~[?:?] {}
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312) ~[?:?] {}
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843) ~[?:?] {re:mixin,re:computing_frames}
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808) ~[?:?] {re:mixin,re:computing_frames}
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188) ~[?:?] {re:mixin}
-- Head --
Thread: Render thread
Stacktrace:
at java.lang.Class.getConstructor0(Class.java:3761) ~[?:?] {}
-- MOD somemod --
Details:
Mod File: <.minecraft>/mods/<somemod>-1.20.1-Forge.jar
Failure message: Some Mod (somemod) has failed to load correctly
java.lang.NoSuchMethodException: com.example.SomeMod.<init>()
Mod Version: 0.1.0
Mod Issue URL: NOT PROVIDED
Exception message: java.lang.NoSuchMethodException: com.example.SomeMod.<init>()
Stacktrace:
at java.lang.Class.getConstructor0(Class.java:3761) ~[?:?] {}
at java.lang.Class.getDeclaredConstructor(Class.java:2930) ~[?:?] {}
at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:68) ~[javafmllanguage-1.20.1-47.1.3.jar%23181!/:?] {}
at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$10(ModContainer.java:123) ~[fmlcore-1.20.1-47.1.3.jar%23180!/:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}
at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) ~[?:?] {}
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312) ~[?:?] {}
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843) ~[?:?] {}
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808) ~[?:?] {}
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188) ~[?:?] {}
Conversation