Create: Copycats+

Create: Copycats+

5M Downloads

[Bug] Client attempts to classload Indium with Embeddium installed

Partonetrain opened this issue ยท 2 comments

commented

Describe the bug
Embeddium natively integrates Sodium with Fabric Rendering API. Copycats+ expects Indium and Sodium and attempts to calll Indium classes even if it's not installed

To Reproduce
Steps to reproduce the behavior:

  1. Install Embeddium and Create Copycats+ (on Fabric)
  2. Place copycat stone button (possibly more blocks)
  3. Crash

Expected behavior
No crash

Desktop (please complete the following information):

  • Minecraft Version: 1.20.1
  • Mod Loader Version: Fabric 0.15.11
  • Mod Version: both 2.0.4 and 2.0.5

Crashlog:

java.lang.NoClassDefFoundError: link/infra/indium/renderer/mesh/MutableQuadViewImpl
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.defineClassFwd(KnotClassLoader.java:160)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:355)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218)
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
	at com.copycatsplus.copycats.foundation.copycat.model.fabric.IntermediateMutableQuadView.lambda$create$0(IntermediateMutableQuadView.java:25)
	at com.copycatsplus.copycats.compat.Mods.runIfInstalled(Mods.java:84)
	at com.copycatsplus.copycats.foundation.copycat.model.fabric.IntermediateMutableQuadView.create(IntermediateMutableQuadView.java:25)
	at com.copycatsplus.copycats.foundation.copycat.model.fabric.CopycatModelFabric.lambda$emitBlockQuads$3(CopycatModelFabric.java:183)
	at net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractRenderContext.lambda$new$1(AbstractRenderContext.java:43)
	at net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractRenderContext.transform(AbstractRenderContext.java:61)
	at net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractBlockRenderContext.renderQuad(AbstractBlockRenderContext.java:112)
	at net.fabricmc.fabric.impl.client.indigo.renderer.render.AbstractBlockRenderContext$2.emitDirectly(AbstractBlockRenderContext.java:69)
	at net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableQuadViewImpl.emit(MutableQuadViewImpl.java:220)
	at net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableQuadViewImpl.emit(MutableQuadViewImpl.java:56)
	at net.fabricmc.fabric.impl.renderer.VanillaModelEncoder.emitBlockQuads(VanillaModelEncoder.java:65)
	at net.minecraft.class_1087.emitBlockQuads(class_1087.java:1041)
	at net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel.emitBlockQuads(ForwardingBakedModel.java:51)
	at me.pepperbell.continuity.client.model.EmissiveBakedModel.emitBlockQuads(EmissiveBakedModel.java:64)
	at net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel.emitBlockQuads(ForwardingBakedModel.java:51)
	at me.pepperbell.continuity.client.model.CtmBakedModel.emitBlockQuads(CtmBakedModel.java:46)
	at net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel.emitBlockQuads(ForwardingBakedModel.java:51)
	at me.pepperbell.continuity.client.model.EmissiveBakedModel.emitBlockQuads(EmissiveBakedModel.java:64)
	at com.copycatsplus.copycats.foundation.copycat.model.fabric.CopycatModelFabric.emitBlockQuads(CopycatModelFabric.java:189)
	at net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel.emitBlockQuads(ForwardingBakedModel.java:51)
	at me.pepperbell.continuity.client.model.CtmBakedModel.emitBlockQuads(CtmBakedModel.java:53)
	at net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel.emitBlockQuads(ForwardingBakedModel.java:51)
	at me.pepperbell.continuity.client.model.EmissiveBakedModel.emitBlockQuads(EmissiveBakedModel.java:72)
	at net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderContext.render(BlockRenderContext.java:79)
	at org.embeddedt.embeddium.render.frapi.IndigoBlockRenderContext.renderEmbeddium(IndigoBlockRenderContext.java:156)
	at me.jellysquid.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer.renderModel(BlockRenderer.java:114)
	at me.jellysquid.mods.sodium.client.render.chunk.compile.tasks.ChunkBuilderMeshingTask.execute(ChunkBuilderMeshingTask.java:122)
	at me.jellysquid.mods.sodium.client.render.chunk.compile.tasks.ChunkBuilderMeshingTask.execute(ChunkBuilderMeshingTask.java:50)
	at me.jellysquid.mods.sodium.client.render.chunk.compile.executor.ChunkJobTyped.execute(ChunkJobTyped.java:44)
	at me.jellysquid.mods.sodium.client.render.chunk.compile.executor.ChunkBuilder$WorkerRunnable.run(ChunkBuilder.java:221)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: link.infra.indium.renderer.mesh.MutableQuadViewImpl
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:226)
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:119)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
	... 39 more
commented

Theres a lot of issues between sodium and create so indium is almost a hard requirement for it to function properly and i believe create actually prompts you to install it

commented

This is a simple incompatibility where Embeddium registers a stub for Indium without providing Indium classes. We can probably switch back to using FRAPI classes if Embeddium is installed.