How to combine jump and x movement using velocity and transform

Hello, I have a problem that I just cannot seem to figure out. Basically I am writing a networking PoC and when I use this code to move, both server and client receive the movement properly.

float x = MathUtils.FloatToInt (Input.GetAxisRaw ("Horizontal"));
if (x <= -1) {
      UpdatePositionServerRpc (PlayerActions.MoveRight);
 } else if (x >= 1) {
      UpdatePositionServerRpc (PlayerActions.MoveLeft);
 } 
rigidbody.transform.position = newPosition.Value;

When I use this code without changing the position with the above code, both server and client jump up and down correctly.

JumpServerRpc ();
rigidbody.velocity = newVelocity.Value * Time.deltaTime;

However, the problem is how do I combine these two to work? Anytime I add in the position change snippet, the jumping stops working. I have tried using add force and it’s variants but they all have issues starting the jump (have to mash the space bar) and jitter once they do jump.

 // jitters when it eventually starts jumping, gotta hit jump many times
 // JumpServerRpc ();
// rigidbody.AddForce (newVelocity.Value * Time.deltaTime, ForceMode.Impulse);

// jitters when it eventually starts jumping, gotta hit jump many times
/ JumpServerRpc ();
/ rigidbody.AddForceAtPosition(
//     newVelocity.Value * Time.deltaTime,   rigidbody.transform.position, ForceMode.Impulse);

Any help on how to combine these two would be greatly appreciated.
Thanks.


I should also add, when I use strictly velocity based movement and jumping it works as expected but my model rotates all over the place and also slides when no input is given.
The calculations for jumping and change in position are very straight forward, I have included them here incase someone wants to see them.

void UpdatePositionServerRpc (PlayerActions playerAction) {
	float speed = 10f;
	Vector3 newPosition = rigidbody.transform.position;
	// Debug.Log ("action: " + playerActions.Value);
	if (PlayerActions.MoveRight == playerAction) {
		newPosition.x = speed;
	} else if (PlayerActions.MoveLeft == playerAction) {
		newPosition.x = -speed;
	} else if (PlayerActions.Idle == playerAction) {
		newPosition.x = 0f;
	}
	float delta = newPosition.x * Time.deltaTime;
	this.newPosition.Value += new Vector3 (delta, 0f, 0f);
}

[ServerRpc]
void JumpServerRpc () {
	newVelocity.Value = new Vector3 (0f, 400f, 0f) - rigidbody.velocity;
}

So I found the issue, it was really stupid. I was not initializing this.newPosition.Value to the characters current position. As soon as I did that, everything started working using both addForce and movement.

Thanks.