The biggest overall issue is replication is happening host to client but not client to host. After a lot of digging I found that the owning client is not correct on the client and must be set properly for the actions to work. Additionally replication only works properly from inputs when being directly called from the player controller no intermediary steps allowed. https://forums.unrealengine.com/t/why-doesnt-replication-work-outside-of-playercharacter/452526

Untitled

I also found this really useful forum which had the following charts that allowed me to understand networking a lot better.

https://cedric-neukirchen.net/docs/multiplayer-compendium/remote-procedure-calls

Untitled

Untitled

Early attempt at replication of gun position

Early attempt at replication of gun position

By far the issue that took the longest amount of time to solve was replicating the visuals of the players movements taking around 20 hours of work time alone. After a lot of trial and error I found that the value of the random float in range replicates to both client and server, but for some reason any value from a property does not. I think it must be something to do with the memory references the value of the positions are not passed in properly.

Untitled

But what it really was is that Unreal does not allowing the passing of transforms from child objects to the server in an attempt as basic built in anti cheat, which I found out on this reddit thread below.

Untitled

Partially working settings, guns are both in the players hands but visuals are not synced

Partially working settings, guns are both in the players hands but visuals are not synced

What finally worked was this Finish thesis on replicating movement in VR on page 44 the writer explained a solution on how to replicate hand movement between client and server. However it was missing how to update the position, however I was able to use my previously outlined server update function and it finally worked.