Problem with Server replication?

For some reason, the varibles i have are only working on the client, and when i use switch has authority, all the values are at their default.

When i call the function, health is only set on the client.
When i try to grab it after using switch has authority, the value is default at 0. but if i don’t use switch has authority, the value is grabbed normally. I can only call this function AFTER a widget closes. But, i cant call this in the widget because there is no switch has authority in widgets.

UFUNCTION(Reliable, Server, WithValidation, NetMulticast)
void CalculateStats();

	virtual void CalculateStats_Implementation();

	virtual bool CalculateStats_Validate();

UPROPERTY(EditAnywhere, Category = "Stats, Base Stats", BlueprintReadWrite, Replicated)
		int32 Current_Health;

DOREPLIFETIME(AWTCPlayerState, Current_Health)