Property replication is simple in theory. Whenever a variable changes its value, the network should notify all clients of the change and then update the variable. This is often used for things like health, where the value is extremely important to know.
When you register a variable like this, this variable should only be modified by the server and then replicated to the other clients. To mark something to be replicated, we use the Replicated specifier inside of the UPROPERTY.
After marking something as replicated, we have to define a new function called GetLifetimeReplicatedProps, which does not need to be declared in the header file. Inside of this function, we use the DOREPLIFETIME macro to state that whenever the JumpCount variable changes on the server, all clients need to modify the value as well.
Inside of the Jump function, we added in some new functionality, but we first check the Role variable to determine if something should happen or not. ROLE_Authority is the highest level, which means that you're the server. This ensures that our functionality will only happen once rather than multiple times.