Skip to content

Commit 608d824

Browse files
Fix X-Ray not hiding grass/snow on vanilla renderer
1 parent 35710bb commit 608d824

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

src/main/java/net/wurstclient/mixin/BlockModelRendererMixin.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,21 @@
77
*/
88
package net.wurstclient.mixin;
99

10+
import java.util.List;
11+
1012
import org.spongepowered.asm.mixin.Mixin;
1113
import org.spongepowered.asm.mixin.injection.At;
1214
import org.spongepowered.asm.mixin.injection.Constant;
1315
import org.spongepowered.asm.mixin.injection.ModifyConstant;
1416

1517
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
1618
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
19+
import com.mojang.blaze3d.vertex.PoseStack;
20+
import com.mojang.blaze3d.vertex.VertexConsumer;
1721

1822
import net.minecraft.client.renderer.block.ModelBlockRenderer;
23+
import net.minecraft.client.renderer.block.model.BakedQuad;
24+
import net.minecraft.client.renderer.block.model.BlockModelPart;
1925
import net.minecraft.core.BlockPos;
2026
import net.minecraft.core.Direction;
2127
import net.minecraft.world.level.BlockAndTintGetter;
@@ -72,4 +78,28 @@ private float modifyOpacity(float original)
7278
{
7379
return currentOpacity.get();
7480
}
81+
82+
/**
83+
* Hides blocks like grass and snow when neither Sodium nor Indigo are
84+
* running.
85+
*/
86+
@WrapOperation(
87+
at = @At(value = "INVOKE",
88+
target = "Ljava/util/List;isEmpty()Z",
89+
ordinal = 1),
90+
method = "tesselateWithoutAO(Lnet/minecraft/world/level/BlockAndTintGetter;Ljava/util/List;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;ZI)V")
91+
private boolean pretendEmptyToStopSecondRenderModelFaceFlatCall(
92+
List<BakedQuad> instance, Operation<Boolean> original,
93+
BlockAndTintGetter world, List<BlockModelPart> list, BlockState state,
94+
BlockPos pos, PoseStack poseStack, VertexConsumer vertexConsumer,
95+
boolean cull, int light)
96+
{
97+
ShouldDrawSideEvent event = new ShouldDrawSideEvent(state, pos);
98+
EventManager.fire(event);
99+
100+
if(Boolean.FALSE.equals(event.isRendered()))
101+
return true;
102+
103+
return original.call(instance);
104+
}
75105
}

0 commit comments

Comments
 (0)