Architectury API (Fabric/Forge/NeoForge)

Architectury API (Fabric/Forge/NeoForge)

158M Downloads

Fabric version is missing fabric-api dependency on fabric.mod.json

davidalb97 opened this issue ยท 7 comments

commented

Launching architectury-api does not show a dependency missing error window for fabric-api.

Minecraft version: 1.17.1
Loader version: 0.11.7;
Architectury-Api version: 2.6.35 (Higher 1.17 versions crash due to missing fabric-loader dependency 0.12.x...)

Possible fixes on fabric.mod.json, for example:

"depends": {
    "minecraft": "~1.17.1"
    "fabricloader": "\u003e\u003d0.11.6",
    "fabric": "*"
}

Crash report:

---- Minecraft Crash Report ----
// Don't do that.

Time: 12/11/21, 10:26 PM
Description: Initializing game

java.lang.RuntimeException: Could not execute entrypoint stage 'main' due to errors, provided by 'architectury'!
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke(EntrypointUtils.java:33)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointClient.start(EntrypointClient.java:33)
	at net.minecraft.class_310.<init>(class_310.java:457)
	at net.minecraft.client.main.Main.main(Main.java:179)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210)
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245)
	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
	at org.multimc.EntryPoint.main(EntryPoint.java:34)
Caused by: java.lang.NoClassDefFoundError: net/fabricmc/fabric/api/client/event/lifecycle/v1/ClientLifecycleEvents
	at dev.architectury.event.fabric.EventHandlerImpl.registerClient(EventHandlerImpl.java:48)
	at dev.architectury.event.EventHandler.registerClient(EventHandler.java)
	at dev.architectury.event.EventHandler.init(EventHandler.java:38)
	at dev.architectury.utils.fabric.GameInstanceImpl.init(GameInstanceImpl.java:44)
	at java.base/java.lang.invoke.MethodHandleProxies$1.invoke(MethodHandleProxies.java:194)
	at jdk.proxy2/com.sun.proxy.jdk.proxy2.$Proxy30.onInitialize(Unknown Source)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:47)
	... 19 more
Caused by: java.lang.ClassNotFoundException: net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
	at net.fabricmc.loader.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:175)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
	... 26 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke0(EntrypointUtils.java:50)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointUtils.invoke(EntrypointUtils.java:33)
	at net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointClient.start(EntrypointClient.java:33)
	at net.minecraft.class_310.<init>(class_310.java:457)

-- Initialization --
Details:
Stacktrace:
	at net.minecraft.client.main.Main.main(Main.java:179)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at net.fabricmc.loader.game.MinecraftGameProvider.launch(MinecraftGameProvider.java:234)
	at net.fabricmc.loader.launch.knot.Knot.launch(Knot.java:153)
	at net.fabricmc.loader.launch.knot.KnotClient.main(KnotClient.java:28)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:567)
	at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210)
	at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245)
	at org.multimc.EntryPoint.listen(EntryPoint.java:143)
	at org.multimc.EntryPoint.main(EntryPoint.java:34)

-- System Details --
Details:
	Minecraft Version: 1.17.1
	Minecraft Version ID: 1.17.1
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 16.0.1, AdoptOpenJDK
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), AdoptOpenJDK
	Memory: 1881538496 bytes (1794 MiB) / 4294967296 bytes (4096 MiB) up to 4294967296 bytes (4096 MiB)
	CPUs: 14
	Processor Vendor: AuthenticAMD
	Processor Name: AMD Ryzen 9 3900X 12-Core Processor            
	Identifier: AuthenticAMD Family 23 Model 113 Stepping 0
	Microarchitecture: Zen 2
	Frequency (GHz): 3.80
	Number of physical packages: 1
	Number of physical CPUs: 7
	Number of logical CPUs: 14
	Graphics card #0 name: NVIDIA GeForce GTX 750 Ti
	Graphics card #0 vendor: NVIDIA (0x10de)
	Graphics card #0 VRAM (MB): 2048.00
	Graphics card #0 deviceId: 0x1380
	Graphics card #0 versionInfo: DriverVersion=30.0.14.7111
	Memory slot #0 capacity (MB): 8192.00
	Memory slot #0 clockSpeed (GHz): 0.00
	Memory slot #0 type: RAM
	Virtual memory max (MB): 14399.44
	Virtual memory used (MB): 9053.25
	Swap memory total (MB): 6211.00
	Swap memory used (MB): 30.41
	JVM Flags: 3 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xms4096m -Xmx4096m
	Launched Version: MultiMC5
	Backend library: LWJGL version 3.2.2 build 10
	Backend API: NO CONTEXT
	Window size: <not initialized>
	GL Caps: Using framebuffer using OpenGL 3.2
	GL debug messages: <disabled>
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	CPU: <unknown>
commented

Not all mods are as updated to 0.12.x loader, updating the loader to 0.12.x breaks some outdated mods.
Most mods are either in 0.11.x or already updated to 0.12.x and as soon as all mods are compatible with that loader version I'll update it eg: ThatOrThis is currently not compatible with 0.12.x and as I am making a modpack for some friends it's crucial that both mods are included.
I can understand if architectury needs the newer loader for the migration to transitive access wideners.

commented

AFAIK this is intended since all features of Architectury API do not in fact need FAPI (although most do).

commented

However, not using fabric-api causes the crash.
Also, as the fabric-loader dependency is missing from fabric.mod.json's dependency list, the last two versions 1.17.1 also crashes when using 0.11.x loader instead of the required 0.12.x.
As the dependencies are not explicitly stated, the people have to try and guess which version of fabric-api/fabric-loader is required through trial and error.

commented

Oh yeah, it's not actually an optional dep. This is a quick and easy change though, expect a fix soon:tm:

As the dependencies are not explicitly stated, the people have to try and guess which version of fabric-api/fabric-loader is required through trial and error.

The latest versions always work - and you should never used outdated versions of those.

commented

As a side note: Mods that don't work with Loader 0.12 break because they're accessing unsupported internals, so this is really expected to happen.

commented

I as only reporting the missing dependencies, not asking for a loader downgrade.
I understand that eventually some mods will stop getting updated and will be incompatible with future loader versions that offer newer features and break old 'hacky' code.

commented

This has been added for 1.16.5, 1.17.1 and 1.18.1 ^^