Controllable (Fabric)

Controllable (Fabric)

1M Downloads

[1.18.2 Forge] Failing to check for stubbed jei by rei

SSUPII opened this issue ยท 9 comments

commented

https://paste.opensuse.org/pastes/7ca14b2c6d0a

The mod makes the game running FTB Stoneblock 3 fail to launch with:
net.minecraftforge.fml.ModLoadingException: Mod controllable only supports jei 10.2.1.283 or above
jei is not installed at all, but instead being stubbed by Roughly Enough Items 8.3.588 for API compatibility. jei, while missing, is being detected as version 9.9999.

The crash no longer happens when compiling commit 684ff04. Commit 16a3465, with description ๐Ÿ› Fixed crash when using JEI 10+ done on November 28, 2022 broke booting while rei is installed. The mod also seems to work fully despite the replacement of jei with rei while running a build from before the problematic commit.

commented

You can try removing the JEI dependency in Controllable's mods.toml, however if REI is creating a stub JEI to pretend the mod is loaded, it's going to cause other issues in the mod since classes will be missing.

commented

Just remove JEI compat plugin of REI to resolve the issue. I can't do anything since my mods actually depends on JEI 10+ codebase.

commented

@MrCrayfish How exactly do you remove this "JEI compat plugin of REI"? My friend and I have been trying for an hour.

commented

@SSUPII hello can you help me get the controllable mod to work? I have the same issue saying jei is 9.9999. I tried removing the mod, but then when i load into the game it crashes. I commented the entire error message.

Now, checking on @TKVisme 's error. REI does have an extra plugin for some more stubborn JEI plugins (it countains some dirty hacks and its usually not needed, at least not needed at all for Controllable), and its the one you removed. You should not need to do it, and in fact it seems like it has broken some other mod.
If the original error before removing that plugin was the 9.999 version one, restore your modpack to the original state first.

Then, you will need to clone the project.
I don't know your operative system, so I will assume Windows. (I cannot test this, as I am running Linux Debian 12)

Install GIT if you don't have it https://git-scm.com/download/win

Open your GIT shell, and type git clone --recursive https://github.com/MrCrayfish/Controllable.git, send
Then, change directory to the one you have just created via cd Controllable, send
Type git checkout 1.18.X, send
Edit the file src/main/resources/META-INF/mods.toml and remove the following lines, starting from line 28...

[[dependencies.controllable]]
   modId="jei"
   mandatory=false
   versionRange="[10.2.1.283,)"
   ordering="NONE"
   side="CLIENT"

Type start gradlew.bat, send and wait for it to finish
If there are no errors, type start gradlew.bat build, send and wait for it to finish
You will find your .jar under build/libs

If you can't do it, I can send my test .jar file with your consent. This is of course not the best, as the link will then lead more people to download a prebuilt that will in the future become obsolete.

commented

@MrCrayfish I removed the one called REIPluginCompatibilities-forge-8.0.46 and now i get his error the second i load into a world:
java.lang.NoClassDefFoundError: mezz/jei/api/IModPlugin
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?] {}
at java.lang.ClassLoader.defineClass(ClassLoader.java:1012) ~[?:?] {}
at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:116) ~[securejarhandler-1.0.3.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.lambda$findClass$16(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:226) ~[securejarhandler-1.0.3.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:216) ~[securejarhandler-1.0.3.jar:?] {}
at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:132) ~[securejarhandler-1.0.3.jar:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}
at com.blamejared.recipestages.events.ClientEventHandler.onGamestageSync(ClientEventHandler.java:19) ~[RecipeStages-3.0.0.10.jar%23243!/:3.0.0.10] {re:classloading}
at net.minecraftforge.eventbus.ASMEventHandler_1413_ClientEventHandler_onGamestageSync_StagesSyncedEvent.invoke(.dynamic) ~[?:?] {}
at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.darkhax.gamestages.packet.GameStagesPacketHandler.processSyncStagesMessage(GameStagesPacketHandler.java:54) ~[GameStages-Forge-1.18.2-8.1.3.jar%23160!/:8.1.3] {re:classloading}
at net.minecraftforge.network.simple.IndexedMessageCodec.lambda$tryDecode$3(IndexedMessageCodec.java:115) ~[forge-1.18.2-40.2.1-universal.jar%23314!/:?] {re:classloading}
at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}
at net.minecraftforge.network.simple.IndexedMessageCodec.tryDecode(IndexedMessageCodec.java:115) ~[forge-1.18.2-40.2.1-universal.jar%23314!/:?] {re:classloading}
at net.minecraftforge.network.simple.IndexedMessageCodec.consume(IndexedMessageCodec.java:153) ~[forge-1.18.2-40.2.1-universal.jar%23314!/:?] {re:classloading}
at net.minecraftforge.network.simple.SimpleChannel.networkEventListener(SimpleChannel.java:72) ~[forge-1.18.2-40.2.1-universal.jar%23314!/:?] {re:mixin,re:classloading}
at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:247) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:239) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-5.0.3.jar%232!/:?] {}
at net.minecraftforge.network.NetworkInstance.dispatch(NetworkInstance.java:68) ~[forge-1.18.2-40.2.1-universal.jar%23314!/:?] {re:classloading}
at net.minecraftforge.network.NetworkHooks.lambda$onCustomPayload$1(NetworkHooks.java:78) ~[forge-1.18.2-40.2.1-universal.jar%23314!/:?] {re:classloading}
at java.util.Optional.map(Optional.java:260) ~[?:?] {re:mixin}
at net.minecraftforge.network.NetworkHooks.onCustomPayload(NetworkHooks.java:78) ~[forge-1.18.2-40.2.1-universal.jar%23314!/:?] {re:classloading}
at net.minecraft.client.multiplayer.ClientPacketListener.m_7413_(ClientPacketListener.java:1824) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:A,pl:runtimedistcleaner:A}
at net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket.m_5797_(ClientboundCustomPayloadPacket.java:57) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,re:mixin,re:classloading,pl:mixin:A}
at net.minecraft.network.protocol.game.ClientboundCustomPayloadPacket.m_5797_(ClientboundCustomPayloadPacket.java:7) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,re:mixin,re:classloading,pl:mixin:A}
at net.minecraft.network.protocol.PacketUtils.m_131356_(PacketUtils.java:22) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,re:mixin,re:classloading,pl:mixin:APP:mixins.essential.json:compatibility.vanilla.Mixin_FixPacketHandlingPastServerShutdown,pl:mixin:A}
at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:157) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.util.thread.ReentrantBlockableEventLoop.m_6367_(ReentrantBlockableEventLoop.java:23) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,re:computing_frames,re:classloading}
at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:131) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.util.thread.BlockableEventLoop.m_18699_(BlockableEventLoop.java:116) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,pl:accesstransformer:B,re:computing_frames,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B}
at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1015) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:dynamiclightsreforged.mixins.json:MinecraftClientMixin,pl:mixin:APP:rubidium.mixins.json:core.MixinMinecraftClient,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:braincell.mixins.json:client.MinecraftMixin,pl:mixin:APP:mixins.oculus.json:MixinMinecraft_Keybinds,pl:mixin:APP:mixins.oculus.json:MixinMinecraft_Images,pl:mixin:APP:mixins.oculus.json:MixinMinecraft_PipelineManagement,pl:mixin:APP:fastload.mixins.json:client.MinecraftClientMixin,pl:mixin:APP:fallingleaves.mixins.json:MinecraftClientMixin,pl:mixin:APP:ars_nouveau.mixins.json:light.ClientMixin,pl:mixin:APP:rubidium_extras.mixins.json:FrameCounter.FpsAccessorMixin,pl:mixin:APP:antiqueatlas-common.mixins.json:MixinMinecraftClient,pl:mixin:APP:flywheel.mixins.json:PausedPartialTickAccessor,pl:mixin:APP:globaldataandresourcepacks.mixins.json:ClientPackFinderMixin,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:konkrete.mixin.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:controllable.mixins.json:client.MinecraftMixin,pl:mixin:APP:blueprint.mixins.json:client.MinecraftMixin,pl:mixin:APP:travelerstitles.mixins.json:MinecraftClientTickMixin,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:APP:fancymenu.general.mixin.json:MixinMinecraft,pl:mixin:APP:fancymenu.general.mixin.json:IMixinMinecraft,pl:mixin:APP:dannys_expansion.mixins.json:client.MinecraftMixin,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixInternalByteBufAccess,pl:mixin:APP:mixins.essential.json:events.Mixin_RenderTickEvent,pl:mixin:APP:create.mixins.json:WindowResizeMixin,pl:mixin:APP:ars_nouveau.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:665) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:dynamiclightsreforged.mixins.json:MinecraftClientMixin,pl:mixin:APP:rubidium.mixins.json:core.MixinMinecraftClient,pl:mixin:APP:balm.mixins.json:MinecraftMixin,pl:mixin:APP:braincell.mixins.json:client.MinecraftMixin,pl:mixin:APP:mixins.oculus.json:MixinMinecraft_Keybinds,pl:mixin:APP:mixins.oculus.json:MixinMinecraft_Images,pl:mixin:APP:mixins.oculus.json:MixinMinecraft_PipelineManagement,pl:mixin:APP:fastload.mixins.json:client.MinecraftClientMixin,pl:mixin:APP:fallingleaves.mixins.json:MinecraftClientMixin,pl:mixin:APP:ars_nouveau.mixins.json:light.ClientMixin,pl:mixin:APP:rubidium_extras.mixins.json:FrameCounter.FpsAccessorMixin,pl:mixin:APP:antiqueatlas-common.mixins.json:MixinMinecraftClient,pl:mixin:APP:flywheel.mixins.json:PausedPartialTickAccessor,pl:mixin:APP:globaldataandresourcepacks.mixins.json:ClientPackFinderMixin,pl:mixin:APP:bookshelf.common.mixins.json:client.AccessorMinecraft,pl:mixin:APP:konkrete.mixin.json:client.MixinMinecraft,pl:mixin:APP:architectury.mixins.json:MixinMinecraft,pl:mixin:APP:controllable.mixins.json:client.MinecraftMixin,pl:mixin:APP:blueprint.mixins.json:client.MinecraftMixin,pl:mixin:APP:travelerstitles.mixins.json:MinecraftClientTickMixin,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:APP:fancymenu.general.mixin.json:MixinMinecraft,pl:mixin:APP:fancymenu.general.mixin.json:IMixinMinecraft,pl:mixin:APP:dannys_expansion.mixins.json:client.MinecraftMixin,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.forge.Mixin_FixInternalByteBufAccess,pl:mixin:APP:mixins.essential.json:events.Mixin_RenderTickEvent,pl:mixin:APP:create.mixins.json:WindowResizeMixin,pl:mixin:APP:ars_nouveau.mixins.json:camera.MinecraftMixin,pl:mixin:A,pl:runtimedistcleaner:A}
at net.minecraft.client.main.Main.main(Main.java:205) ~[client-1.18.2-20220404.173914-srg.jar%23309!/:?] {re:classloading,re:mixin,pl:runtimedistcleaner:A,pl:mixin:A,pl:runtimedistcleaner:A}
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}
at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {re:mixin}
at net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$launchService$0(CommonClientLaunchHandler.java:31) ~[fmlloader-1.18.2-40.2.1.jar%2317!/:?] {}
at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.1.3.jar%235!/:?] {}
at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:149) [bootstraplauncher-1.0.0.jar:?] {}
Caused by: java.lang.ClassNotFoundException: mezz.jei.api.IModPlugin
at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}
at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:134) ~[securejarhandler-1.0.3.jar:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}
at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:134) ~[securejarhandler-1.0.3.jar:?] {}
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {}
... 51 more

commented

@SSUPII hello can you help me get the controllable mod to work? I have the same issue saying jei is 9.9999. I tried removing the mod, but then when i load into the game it crashes. I commented the entire error message.

commented

Sorry for responding just now, I did put this issue to the side and did not look at it again. So thanks to @TKVisme for reminding me.

I am currently under very little free time, but I'll do what I can to test this.

Just remove JEI compat plugin of REI to resolve the issue. I can't do anything since my mods actually depends on JEI 10+ codebase.

This compatibility is not a plugin, is standard REI behavior. Removing REI from a big modpack like the one I mentioned is a terrible idea that will create more broken dependencies from other mods that expect REI to be working in a certain way and bad configuration files.

Removing the dependency from mods.toml does indeed make the very latest commit of Controllable in the 1.18.X branch run under REI, and even works just fine with a fresh Minecraft install (with only REI and controllable installed) without any error or warning in log. have not tested in the FTB Stoneblock 3 modpack, but should work just fine there too.

If there is no interest in directly supporting REI, its possible for a fork to be made in the future that targets its compatibility (of course making sure all issues with this fork are managed by it, as of course there is a possibility of the two repositories diverging).

commented

i may not be the original poster, but that test jar could come in handy because i dont have any plans to update controllable or stoneblock 3

commented

I know this issue has been active, the best I can do is attempt to disable any JEI related code when REI and it's plugin is installed. The only problem is that I still need to depend on JEI 10+ since it's required for my mod to integrate without crashing when JEI is actually installed; this means keeping the dependency definition in my mods.toml. REI will still need to update their hack to support JEI 10+ for this to truely be solved.