diff --git a/fabric/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/fabric/CopycatModelFabric.java b/fabric/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/fabric/CopycatModelFabric.java index 575a2a958..0b9635611 100644 --- a/fabric/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/fabric/CopycatModelFabric.java +++ b/fabric/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/fabric/CopycatModelFabric.java @@ -197,7 +197,13 @@ public void emitBlockQuads(BlockAndTintGetter blockView, BlockState state, Block CopycatRenderContextFabric copycatContext = new CopycatRenderContextFabric(quads, emitter, entry.key()); entry.part().emitCopycatQuads(entry.key(), state, copycatContext, material); - context.pushTransform(quad -> !occlusionData.isOccluded(quad.cullFace())); + context.pushTransform(quad -> { + if (occlusionData.isOccluded(quad.cullFace())) + return false; + // Set cull face to null after culling to avoid interference from sodium + quad.cullFace(null); + return true; + }); meshBuilder.build().outputTo(context.getEmitter()); context.popTransform(); diff --git a/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/assembly/forge/CopycatRenderContextForge.java b/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/assembly/forge/CopycatRenderContextForge.java index 4853d2026..ff3ed3b41 100644 --- a/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/assembly/forge/CopycatRenderContextForge.java +++ b/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/assembly/forge/CopycatRenderContextForge.java @@ -114,7 +114,7 @@ public static MutableQuad getMutableQuad(int[] vertexData, @Nullable Direction c public static class CopycatBakedQuad extends BakedQuad { @Nullable - public final Direction cullFace; + public Direction cullFace; public final String property; public CopycatBakedQuad(int[] vertices, int tintIndex, Direction direction, TextureAtlasSprite sprite, boolean shade, @Nullable Direction cullFace, String property) { diff --git a/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/forge/CopycatModelForge.java b/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/forge/CopycatModelForge.java index add7b541e..03a21fad8 100644 --- a/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/forge/CopycatModelForge.java +++ b/forge/src/main/java/com/copycatsplus/copycats/foundation/copycat/model/forge/CopycatModelForge.java @@ -252,6 +252,10 @@ private void gatherOcclusionData(BlockAndTintGetter world, BlockPos pos, BlockSt if (occlusionData != null && occlusionData.isOccluded(croppedQuad.cullFace)) continue; + // Copycat quads are already culled. Set it to null to avoid interference from sodium + if (entry.type().useCopycatLogic()) + croppedQuad.cullFace = null; + allQuads.add(croppedQuad); } }