Skip to content

Commit ab93731

Browse files
chore(events): Update RenderEntityEvent injection points
[no ci] This may change some behavior because the global projection matrix and other rendering states may not be the same.
1 parent cab0736 commit ab93731

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

events/src/main/java/gg/skytils/event/mixins/render/MixinRendererLivingEntity.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@
1818

1919
package gg.skytils.event.mixins.render;
2020

21+
import com.llamalad7.mixinextras.sugar.Local;
2122
import gg.skytils.event.EventsKt;
2223
import gg.skytils.event.impl.render.LivingEntityPostRenderEvent;
2324
import gg.skytils.event.impl.render.LivingEntityPreRenderEvent;
2425
import net.minecraft.client.MinecraftClient;
26+
import net.minecraft.client.render.entity.EntityRenderDispatcher;
27+
import net.minecraft.client.render.entity.EntityRenderer;
2528
import net.minecraft.client.render.entity.LivingEntityRenderer;
2629
import net.minecraft.entity.Entity;
2730
import net.minecraft.entity.LivingEntity;
@@ -40,7 +43,10 @@
4043
import 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)
4450
public 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

Comments
 (0)