Velocity value for server character is 0.0 but on client it works fine

I have just realised, that its not printing the server’s velocity at all, the 0.0 i am seeing is the clients velocity. It is always printing the clients velocity and it works fine, but the servers velocity isnt even being printed

I have a character, and a custom charactermovementcomponent. In the character I do simple things like moving forwards and right, and a simple replicated jump (using impulse) function. But in the movementcomponent, in the tick function, I am printing the string of the characters velocity. I have tried two methods.

CharacterOwner->GetVelocity()

and

Velocity.X

The top one access’ the characters velocity, where as the bottom one gets the velocity of the movementcomponent.
I am then just printing them to the screen by this for example

 GEngine->AddOnScreenDebugMessage(-2, 0.05f, FColor::Yellow , FString::SanitizeFloat(CharacterOwner->GetVelocity().X))

or

GEngine->AddOnScreenDebugMessage(-2, 0.05f, FColor::Yellow , FString::SanitizeFloat(Velocity.X))

Either method works perfectly when I am moving on the client’s character, but when I am using the server’s character, it will only ever read 0.0 for the velocity (in any direction).

I have no idea what could possible be the problem.
I need this because I am going to store the current velocity, and then perform some calculations, and then addmovementinput() based on those calculations.

Thanks

Also, nothing in the character’s movementcomponent is replicated (nor should it need to be right?)

The only replication I have done is the customjump in my characters class. It seems be be some kind of replication problem, but I am not using replication at all. Do server characters not have a velocity or something?

Turns out I think it was a problem with printing the string?

It works if i use UKismetSystemLibrary::PrintString