Can't start server with my mod that depends on owo, client works fine
Closed this issue · 1 comments
i just switched over to using owo-lib for a small mod i'm working on for friends, and it's been great so far.
currently my mod works perfectly fine and as expected when run on just a client, but when i try to start a server with my mod, owo, and the fabric api (versions below), i get the RuntimeException shown below. i can only assume i've done something silly because i am still learning Minecraft modding, etc., but i can't figure out what i'm meant to change/fix.
any help would be greatly appreciated.
relevant mod versions:
owo-lib-0.12.24+1.21.9
fabric-api-0.134.0+1.21.9
[17:52:35] [main/INFO]: Initializing QLCraft...
[17:52:35] [main/ERROR]: Failed to start the minecraft server
java.lang.RuntimeException: Could not execute entrypoint stage 'main' due to errors, provided by 'qlcraft' at 'net.alef.qlcraft.QLCraft'!
at net.fabricmc.loader.impl.FabricLoaderImpl.lambda$invokeEntrypoints$0(FabricLoaderImpl.java:409) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:407) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.game.minecraft.Hooks.startServer(Hooks.java:63) ~[fabric-loader-0.17.3.jar:?]
at knot/net.minecraft.server.Main.main(Main.java:112) [server-intermediary.jar:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:506) [fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:72) [fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotServer.main(KnotServer.java:23) [fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.server.FabricServerLauncher.main(FabricServerLauncher.java:69) [fabric-loader-0.17.3.jar:?]
at net.fabricmc.installer.ServerLauncher.main(ServerLauncher.java:69) [fabric-server-mc.1.21.9-loader.0.17.3-launcher.1.1.0.jar:1.1.0]
Caused by: java.lang.NoClassDefFoundError: net/minecraft/class_4068
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) ~[?:?]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) ~[?:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.defineClassFwd(KnotClassLoader.java:165) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:368) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:231) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119) ~[fabric-loader-0.17.3.jar:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) ~[?:?]
at knot/io.wispforest.owo.itemgroup.Icon.of(Icon.java:58) ~[owo-lib-0.12.24+1.21.9.jar:?]
at knot/net.alef.qlcraft.items.ModItems.<clinit>(ModItems.java:20) ~[qlcraft-0.0.2.jar:?]
at knot/net.alef.qlcraft.QLCraft.onInitialize(QLCraft.java:34) ~[qlcraft-0.0.2.jar:?]
at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:405) ~[fabric-loader-0.17.3.jar:?]
... 7 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.class_4068
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580) ~[?:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) ~[?:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:239) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119) ~[fabric-loader-0.17.3.jar:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) ~[?:?]
at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:962) ~[?:?]
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) ~[?:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.defineClassFwd(KnotClassLoader.java:165) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:368) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:231) ~[fabric-loader-0.17.3.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119) ~[fabric-loader-0.17.3.jar:?]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490) ~[?:?]
at knot/io.wispforest.owo.itemgroup.Icon.of(Icon.java:58) ~[owo-lib-0.12.24+1.21.9.jar:?]
at knot/net.alef.qlcraft.items.ModItems.<clinit>(ModItems.java:20) ~[qlcraft-0.0.2.jar:?]
at knot/net.alef.qlcraft.QLCraft.onInitialize(QLCraft.java:34) ~[qlcraft-0.0.2.jar:?]
at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:405) ~[fabric-loader-0.17.3.jar:?]
... 7 more
these appear, to me at least, to be the relevant lines:
...
at knot/io.wispforest.owo.itemgroup.Icon.of(Icon.java:58) ~[owo-lib-0.12.24+1.21.9.jar:?]
at knot/net.alef.qlcraft.items.ModItems.<clinit>(ModItems.java:20) ~[qlcraft-0.0.2.jar:?]
...
and the relevant section from my ModItems.java file:
public class ModItems implements AutoRegistryContainer<Item> {
public static final Icon GROUP_ICON = Icon.of(id("textures/group_icon.png"), 16, 16, false);
//* item group for QLCraft items
//* assign to group by calling ".group(QLCraft.QLCRAFT_GROUP)" on item settings
//* when registering blocks/items in ModItems/ModBlocks class (if i add blocks)
public static final OwoItemGroup QLCRAFT_GROUP = OwoItemGroup.builder(
id("item_group"),
() -> GROUP_ICON).disableDynamicTitle().build();
public static final Item RAILGUN = register("railgun", RailgunItem::new, new Item.Settings().maxCount(1).group(QLCRAFT_GROUP));
...
(Rest of ModItems class here)
...
}i managed to solve the issue myself.
turns out i was in fact doing something silly, in that i was creating the item group on the common/main/server side, instead of the client side.
i moved the GROUP_ICON and QLCRAFT_GROUP declarations to the client mod initializer, and registered the item there using the ItemGroupEvents.modifyEntriesEvent() method to add the item to the group.
closing this, and sorry for the bother.