Skip to content

Commit a3a28bb

Browse files
committed
Fix rotations
1 parent 6b97afa commit a3a28bb

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

common/src/main/java/com/lambda/mixin/render/LivingEntityRendererMixin.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,9 @@
1919

2020
import com.lambda.Lambda;
2121
import com.lambda.interaction.request.rotation.RotationManager;
22-
import net.minecraft.client.render.VertexConsumerProvider;
2322
import net.minecraft.client.render.entity.LivingEntityRenderer;
24-
import net.minecraft.client.render.entity.model.EntityModel;
2523
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
26-
import net.minecraft.client.util.math.MatrixStack;
2724
import net.minecraft.entity.LivingEntity;
28-
import net.minecraft.util.math.MathHelper;
2925
import org.spongepowered.asm.mixin.Mixin;
3026
import org.spongepowered.asm.mixin.Unique;
3127
import org.spongepowered.asm.mixin.injection.At;
@@ -35,27 +31,29 @@
3531

3632
import java.util.Objects;
3733

34+
// This mixin's purpose is to set the player's pitch the current render pitch to correctly show the rotation
35+
// regardless of the camera position
3836
@Mixin(LivingEntityRenderer.class)
39-
public class LivingEntityRendererMixin<T extends LivingEntity, S extends LivingEntityRenderState, M extends EntityModel<? super S>> {
37+
public class LivingEntityRendererMixin<T extends LivingEntity, S extends LivingEntityRenderState> {
4038
@Unique
4139
private Float lambda$pitch = null;
4240

43-
// TODO: Fix all of this
44-
@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"))
45-
private void injectRender(S livingEntityRenderState, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int i, CallbackInfo ci) {
41+
@Inject(method = "updateRenderState(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;F)V", at = @At("HEAD"))
42+
private void injectRender(T livingEntity, S livingEntityRenderState, float f, CallbackInfo ci) {
4643
Float rotationPitch = RotationManager.getRenderPitch();
4744

4845
this.lambda$pitch = null;
4946

50-
/*if (livingEntity != Lambda.getMc().player || rotationPitch == null) {
47+
if (livingEntity != Lambda.getMc().player || rotationPitch == null) {
5148
return;
52-
}*/
49+
}
5350

5451
this.lambda$pitch = rotationPitch;
5552
}
5653

57-
/*@Redirect(method = "render(Lnet/minecraft/entity/LivingEntity;FFLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;lerp(FFF)F", ordinal = 0), require = 0)
58-
private float injectRotationPitch(float g, float f, float s) {
59-
return Objects.requireNonNullElseGet(lambda$pitch, () -> MathHelper.lerp(g, f, s));
60-
}*/
54+
// FixMe: When there are no rotations, the pitch is always set to 0
55+
@Redirect(method = "updateRenderState(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;F)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;getLerpedPitch(F)F", ordinal = 0), require = 0)
56+
private float injectRotationPitch(LivingEntity instance, float v) {
57+
return Objects.requireNonNullElse(lambda$pitch, v);
58+
}
6159
}

0 commit comments

Comments
 (0)