1818
1919package gg .skytils .event .mixins .render ;
2020
21+ import com .llamalad7 .mixinextras .sugar .Local ;
2122import gg .skytils .event .EventsKt ;
2223import gg .skytils .event .impl .render .LivingEntityPostRenderEvent ;
2324import gg .skytils .event .impl .render .LivingEntityPreRenderEvent ;
2425import net .minecraft .client .MinecraftClient ;
26+ import net .minecraft .client .render .entity .EntityRenderDispatcher ;
27+ import net .minecraft .client .render .entity .EntityRenderer ;
2528import net .minecraft .client .render .entity .LivingEntityRenderer ;
2629import net .minecraft .entity .Entity ;
2730import net .minecraft .entity .LivingEntity ;
4043import net .minecraft .client .render .entity .state .LivingEntityRenderState ;
4144//#endif
4245
43- @ Mixin (LivingEntityRenderer .class )
46+ //#if MC==10809
47+ //$$ @Mixin(LivingEntityRenderer.class)
48+ //#else
49+ @ Mixin (EntityRenderDispatcher .class )
4450public class MixinRendererLivingEntity
4551 //#if MC<12000
4652 //$$ <T extends LivingEntity>
@@ -56,14 +62,15 @@ public class MixinRendererLivingEntity
5662 //$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At("HEAD"), cancellable = true)
5763 //$$ private void onRender(T entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) {
5864 //#else
59- @ Inject (method = "render(Lnet/minecraft/client/render/ entity/state/LivingEntityRenderState;Lnet /minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V" , at = @ At ("HEAD " ), cancellable = true )
60- private void onRender (T entity , float f , float partialTicks , MatrixStack matrixStack , VertexConsumerProvider vertexConsumerProvider , int i , CallbackInfo ci ) {
65+ @ Inject (method = "render(Lnet/minecraft/entity/Entity;DDDFLnet /minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;DDDFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/EntityRenderer;)V " ), cancellable = true )
66+ private void onRender (Entity entity , double x , double y , double z , float tickProgress , MatrixStack matrices , VertexConsumerProvider vertexConsumers , int light , CallbackInfo ci , @ Local EntityRenderer < T , S > renderer ) {
6167 //#endif
68+ if (!(entity instanceof LivingEntity )) return ;
6269 Entity viewEntity = MinecraftClient .getInstance ().getCameraEntity ();
6370 if (viewEntity == null ) return ;
64- double renderX = entity .lastRenderX + (entity .getPos ().x - entity .lastRenderX - viewEntity .getPos ().x + viewEntity .lastRenderX ) * partialTicks - viewEntity .lastRenderX ;
65- double renderY = entity .lastRenderY + (entity .getPos ().y - entity .lastRenderY - viewEntity .getPos ().y + viewEntity .lastRenderY ) * partialTicks - viewEntity .lastRenderY ;
66- double renderZ = entity .lastRenderZ + (entity .getPos ().z - entity .lastRenderZ - viewEntity .getPos ().z + viewEntity .lastRenderZ ) * partialTicks - viewEntity .lastRenderZ ;
71+ double renderX = entity .lastRenderX + (entity .getPos ().x - entity .lastRenderX - viewEntity .getPos ().x + viewEntity .lastRenderX ) * tickProgress - viewEntity .lastRenderX ;
72+ double renderY = entity .lastRenderY + (entity .getPos ().y - entity .lastRenderY - viewEntity .getPos ().y + viewEntity .lastRenderY ) * tickProgress - viewEntity .lastRenderY ;
73+ double renderZ = entity .lastRenderZ + (entity .getPos ().z - entity .lastRenderZ - viewEntity .getPos ().z + viewEntity .lastRenderZ ) * tickProgress - viewEntity .lastRenderZ ;
6774 @ SuppressWarnings ("unchecked" )
6875 //#if MC<12000
6976 //$$ LivingEntityPreRenderEvent<T>
@@ -75,17 +82,17 @@ private void onRender(T entity, float f, float partialTicks, MatrixStack matrixS
7582 //#endif
7683 //#endif
7784 event =
78- new LivingEntityPreRenderEvent <>(entity ,
85+ new LivingEntityPreRenderEvent <>(( T ) entity ,
7986 //#if MC<12000
8087 //$$ (LivingEntityRenderer<T>) (Object) this,
8188 //#else
8289 //#if MC<12100
8390 //$$ (LivingEntityRenderer<T, M>) (Object) this,
8491 //#else
85- (LivingEntityRenderer <T , S , M >) ( Object ) this ,
92+ (LivingEntityRenderer <T , S , M >) renderer ,
8693 //#endif
8794 //#endif
88- renderX , renderY , renderZ , partialTicks );
95+ renderX , renderY , renderZ , tickProgress );
8996 if (EventsKt .postCancellableSync (event )) {
9097 ci .cancel ();
9198 }
@@ -95,8 +102,8 @@ private void onRender(T entity, float f, float partialTicks, MatrixStack matrixS
95102 //$$ @Inject(method = "render(Lnet/minecraft/entity/LivingEntity;DDDFF)V", at = @At("TAIL"))
96103 //$$ private void onRenderPost(T entity, double x, double y, double z, float entityYaw, float partialTicks, CallbackInfo ci) {
97104 //#else
98- @ Inject (method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet /minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V" , at = @ At ("TAIL" ))
99- private void onRenderPost (T entity , float f , float partialTicks , MatrixStack matrixStack , VertexConsumerProvider vertexConsumerProvider , int i , CallbackInfo ci ) {
105+ @ Inject (method = "render(Lnet/minecraft/entity/Entity;DDDFLnet /minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/render/entity/EntityRenderDispatcher;render(Lnet/minecraft/entity/Entity;DDDFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;ILnet/minecraft/client/render/entity/EntityRenderer;)V" , shift = At . Shift . AFTER ))
106+ private void onRenderPost (Entity entity , double x , double y , double z , float tickProgress , MatrixStack matrices , VertexConsumerProvider vertexConsumers , int light , CallbackInfo ci ) {
100107 //#endif
101108 EventsKt .postSync (new LivingEntityPostRenderEvent (entity ));
102109 }
0 commit comments