22
33import com .llamalad7 .mixinextras .injector .ModifyExpressionValue ;
44import com .llamalad7 .mixinextras .sugar .Local ;
5+ import net .minecraft .client .renderer .entity .EntityRenderDispatcher ;
56import net .minecraft .world .entity .Leashable ;
67import org .embeddedt .embeddium .impl .render .EmbeddiumWorldRenderer ;
78import net .minecraft .client .renderer .culling .Frustum ;
89import net .minecraft .client .renderer .entity .EntityRenderer ;
910import net .minecraft .world .entity .Entity ;
11+ import org .spongepowered .asm .mixin .Final ;
1012import org .spongepowered .asm .mixin .Mixin ;
13+ import org .spongepowered .asm .mixin .Shadow ;
1114import org .spongepowered .asm .mixin .injection .At ;
1215import org .spongepowered .asm .mixin .injection .Inject ;
1316import org .spongepowered .asm .mixin .injection .callback .CallbackInfoReturnable ;
1417
1518@ Mixin (EntityRenderer .class )
1619public 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