From 37b49a2c455a3e85bf9972c34b8f1c75b6e45722 Mon Sep 17 00:00:00 2001
From: IThundxr <me@ithundxr.dev>
Date: Tue, 27 Aug 2024 11:05:59 -0400
Subject: [PATCH] Update copycat occlusion

---
 .../decoration/copycat/CopycatPanelBlock.java    | 16 ++++++++++------
 ...ionTestWorld.java => OcclusionTestLevel.java} |  2 +-
 2 files changed, 11 insertions(+), 7 deletions(-)
 rename src/main/java/com/simibubi/create/foundation/utility/worldWrappers/{OcclusionTestWorld.java => OcclusionTestLevel.java} (95%)

diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java
index d7adde68e..5b2a80f6d 100644
--- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java
+++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatPanelBlock.java
@@ -9,7 +9,7 @@ import com.simibubi.create.foundation.placement.IPlacementHelper;
 import com.simibubi.create.foundation.placement.PlacementHelpers;
 import com.simibubi.create.foundation.placement.PlacementOffset;
 
-import com.simibubi.create.foundation.utility.worldWrappers.OcclusionTestWorld;
+import com.simibubi.create.foundation.utility.worldWrappers.OcclusionTestLevel;
 
 import net.minecraft.MethodsReturnNonnullByDefault;
 import net.minecraft.core.BlockPos;
@@ -188,12 +188,16 @@ public class CopycatPanelBlock extends WaterloggedCopycatBlock {
 			if (material.skipRendering(otherMaterial, dir.getOpposite()))
 				return isOccluded(state, neighborState, dir.getOpposite());
 
-			OcclusionTestWorld occlusionTestWorld = new OcclusionTestWorld();
-			occlusionTestWorld.setBlock(pos, material);
-			occlusionTestWorld.setBlock(otherPos, otherMaterial);
-			if (material.isSolidRender(occlusionTestWorld, pos) && otherMaterial.isSolidRender(occlusionTestWorld, otherPos))
-				if(!Block.shouldRenderFace(otherMaterial, occlusionTestWorld, pos, dir.getOpposite(), otherPos))
+			OcclusionTestLevel occlusionTestLevel = new OcclusionTestLevel();
+			occlusionTestLevel.setBlock(pos, material);
+			occlusionTestLevel.setBlock(otherPos, otherMaterial);
+			if (material.isSolidRender(occlusionTestLevel, pos) && otherMaterial.isSolidRender(occlusionTestLevel, otherPos))
+				if(!Block.shouldRenderFace(otherMaterial, occlusionTestLevel, pos, dir.getOpposite(), otherPos)) {
+					occlusionTestLevel.clear();
 					return isOccluded(state, neighborState, dir.getOpposite());
+				}
+
+			occlusionTestLevel.clear();
 		}
 
 		return state.getValue(FACING) == dir.getOpposite()
diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/OcclusionTestWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/OcclusionTestLevel.java
similarity index 95%
rename from src/main/java/com/simibubi/create/foundation/utility/worldWrappers/OcclusionTestWorld.java
rename to src/main/java/com/simibubi/create/foundation/utility/worldWrappers/OcclusionTestLevel.java
index 23f1ab38d..ef72b63c8 100644
--- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/OcclusionTestWorld.java
+++ b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/OcclusionTestLevel.java
@@ -20,7 +20,7 @@ import java.util.Map;
  */
 @ParametersAreNonnullByDefault
 @MethodsReturnNonnullByDefault
-public class OcclusionTestWorld implements BlockGetter {
+public class OcclusionTestLevel implements BlockGetter {
 	private final Map<BlockPos, BlockState> blocks = new HashMap<>();
 
 	public void setBlock(BlockPos pos, BlockState state) {