Skip to content

Commit aa6657d

Browse files
committed
Use the correct entity renderer when culling leashed entities
1 parent 619ac98 commit aa6657d

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/main/java/org/embeddedt/embeddium/impl/mixin/features/render/entity/cull/EntityRendererMixin.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,25 @@
22

33
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
44
import com.llamalad7.mixinextras.sugar.Local;
5+
import net.minecraft.client.renderer.entity.EntityRenderDispatcher;
56
import net.minecraft.world.entity.Leashable;
67
import org.embeddedt.embeddium.impl.render.EmbeddiumWorldRenderer;
78
import net.minecraft.client.renderer.culling.Frustum;
89
import net.minecraft.client.renderer.entity.EntityRenderer;
910
import net.minecraft.world.entity.Entity;
11+
import org.spongepowered.asm.mixin.Final;
1012
import org.spongepowered.asm.mixin.Mixin;
13+
import org.spongepowered.asm.mixin.Shadow;
1114
import org.spongepowered.asm.mixin.injection.At;
1215
import org.spongepowered.asm.mixin.injection.Inject;
1316
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1417

1518
@Mixin(EntityRenderer.class)
1619
public abstract class EntityRendererMixin<T extends Entity> {
20+
@Shadow
21+
@Final
22+
protected EntityRenderDispatcher entityRenderDispatcher;
23+
1724
@ModifyExpressionValue(method = "shouldRender", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/culling/Frustum;isVisible(Lnet/minecraft/world/phys/AABB;)Z", ordinal = 0))
1825
private boolean checkSectionForCullingMain(boolean isWithinFrustum, @Local(ordinal = 0, argsOnly = true) T entity) {
1926
if(!isWithinFrustum) {
@@ -36,7 +43,9 @@ private boolean checkSectionForCullingMain(boolean isWithinFrustum, @Local(ordin
3643
// Check if the entity is in a visible chunk section
3744

3845
var renderer = EmbeddiumWorldRenderer.instanceNullable();
46+
//noinspection DataFlowIssue - Vanilla has already checked getLeashHolder is non-null.
47+
var leashHolderRenderer = this.entityRenderDispatcher.getRenderer(leashable.getLeashHolder());
3948

40-
return renderer == null || renderer.isEntityVisible(leashable.getLeashHolder(), (EntityRenderer)(Object)this);
49+
return renderer == null || renderer.isEntityVisible(leashable.getLeashHolder(), leashHolderRenderer);
4150
}
4251
}

0 commit comments

Comments
 (0)