Make Client Pawn Replicate Server Pawn Movement Exactly

The first thing that pops out too me is the “virtual” missing from the declaration. This may mess up UHT.

Try:

UFUNCTION(Reliable, Client, WithValidation)
 virtual void Client_UpdatePosition(FRotator newRot);
 virtual void Client_UpdatePosition_Implementation(FRotator newRot);
 virtual bool Client_UpdatePosition_Validate(FRotator newRot);