diff --git a/MixinCameraInterpolation.java b/MixinCameraInterpolation.java new file mode 100644 index 0000000..462d257 --- /dev/null +++ b/MixinCameraInterpolation.java @@ -0,0 +1,30 @@ +package xyz.nodrop.farmingtools.mixin.client; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.Camera; +import net.minecraft.entity.Entity; +import net.minecraft.world.World; +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.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import xyz.nodrop.farmingtools.client.pathfinding.PathfindingController; + +@Mixin(Camera.class) +public abstract class MixinCameraInterpolation { + + @Shadow protected abstract void setRotation(float yaw, float pitch); + + @Inject(method = "update", at = @At("TAIL")) + private void onCameraUpdate(World area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickProgress, CallbackInfo ci) { + MinecraftClient client = MinecraftClient.getInstance(); + if (client.player == null) return; + if (!PathfindingController.INSTANCE.getExecutor().isActive()) return; + + float yaw = PathfindingController.INSTANCE.getExecutor().getInterpolatedYaw(tickProgress); + float pitch = PathfindingController.INSTANCE.getExecutor().getInterpolatedPitch(tickProgress); + + this.setRotation(yaw, pitch); + } +} \ No newline at end of file