maybe I cut it too short, yes, the controller will be thought as “local”, but there are only ever going to be one controller that can issue commands(which is the local controller).
(another exception would be local coop where you have multiple controller, but that’s outside of this discussion).
When I say you should do this on PlayerController class, it’s because HUD only exist on client side(even listening host, where you have all the clients’ replicated controllers, only 1 can get/set HUD.)
From your blueprint, you still run this on the Pawn class, it will never work this way as replicated pawn will always controlled by the controller locally(replicated or not).
I have this part figured out back when UMG is still experimental, so trust me, do all your stuff from the PlayerController class if you ever want your multiplayer to not drive you crazy.
EDIT: I look at your graph, for multiplayer game, you should avoid using getPlayerController function that need to specify controller index to work. Instead, you should just use getController when in Pawn class.