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) {