Added viewer argument to onOpen, made a permanent ClientPlayer instance for when the player is not in a game and info is needed