Skip to content

Commit

Permalink
Merge branch 'refs/heads/11-camera-does-not-lean-while-train-is-on-a-…
Browse files Browse the repository at this point in the history
…slope' into dev/v0.2.2

# Conflicts:
#	common/src/main/resources/create_train_perspective.mixins.json
  • Loading branch information
der-fruhling committed Apr 22, 2024
2 parents 3e70124 + 1a8125a commit 1cfae5b
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ public interface PlayerPerspectiveBehavior {
void disable();
void setLean(float lean);
void setYaw(float yaw);
float getLean();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.derfruhling.minecraft.create.trainperspective.mixin;

import net.derfruhling.minecraft.create.trainperspective.PlayerPerspectiveBehavior;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.world.entity.Entity;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyArg;

@Mixin(Camera.class)
public class CameraMixin {
@Shadow private Entity entity;

@ModifyArg(method = "setup", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;setRotation(FF)V", ordinal = 0), index = 1)
public float modifyXRotPrimary(float xRot) {
if(entity instanceof LocalPlayer player) {
var persp = (PlayerPerspectiveBehavior) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(player);
return xRot - persp.getLean();
} else return xRot;
}

@ModifyArg(method = "setup", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;setRotation(FF)V", ordinal = 1), index = 1)
public float modifyXRotThirdPersonMirrored(float invertedXRot) {
if(entity instanceof LocalPlayer player) {
var persp = (PlayerPerspectiveBehavior) Minecraft.getInstance().getEntityRenderDispatcher().getRenderer(player);
return invertedXRot + persp.getLean();
} else return invertedXRot;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ public class PlayerRendererMixin {
ctp$yaw = yaw;
}

public float ctp$getLean() {
return ctp$lean;
}

@Inject(
method = "setupRotations(Lnet/minecraft/client/player/AbstractClientPlayer;Lcom/mojang/blaze3d/vertex/PoseStack;FFF)V",
at = @At(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"compatibilityLevel": "JAVA_8",
"client": [
"PlayerRendererMixin",
"ContraptionColliderMixin"
"ContraptionColliderMixin",
"CameraMixin"
],
"injectors": {
"defaultRequire": 1
Expand Down

0 comments on commit 1cfae5b

Please sign in to comment.