Begin Play not called on client

Player Controller don’t exist in client side for security reasons. There PlayerState class that is dedicated for public information about player avable to anyone (there also GameMode which is also not replicated equivalent GameState) and HUD can grab information from there, i recommend ot use UMG binding (Slate has it to if you use that)

You can also use function call replication so playercontroller can send something to character or other object, there section dedicated about it here:

You can also try to hook up to other event. Remember about security, even if you don’t provide any UI to specific function, even if you don’t display information that you replicate, you need to remember that user has free access to memory of there machine and free access to there network IO and they can do anything to them with external software. So you need to strictly control what is replicated and what is not and what client and server should listen to.