Prefab not spawning on client correctly

I’m making a multiplayer fps, and I’m trying to add a gun to the player as soon as they spawn. On the host it works great, but on the client it says ‘ArgumentException: The thing you want to instantiate is null’. I’m running one instance on the editor and one in a build, if that helps. The weapons all have NetworkIdentities. Weapon spawning code:

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class WeaponryHandler : NetworkBehaviour {
	//Public vars
	public GameObject Gimbal;
	public GameObject StartingWeapon;
	//Private vars
	private GameObject CurrentWeapon;

	public override void OnStartLocalPlayer ()
	{
		base.OnStartLocalPlayer ();
		Debug.Log (isLocalPlayer);
		Cmd_EquipWeapon (StartingWeapon);
	}

	[Command]
	void Cmd_EquipWeapon(GameObject Weapon){//Try read Prefab from file
		Debug.Log ("rekskoped");
		GameObject wep = (GameObject)Instantiate (Weapon, Vector3.zero, Quaternion.identity);
		wep.transform.parent = Gimbal.transform;
		NetworkServer.Spawn (wep);
		Rpc_SyncGun (wep);
	}

	[ClientRpc]
	void Rpc_SyncGun(GameObject wep){
		wep.transform.parent = Gimbal.transform;
		wep.transform.localPosition = Vector3.zero;
		wep.transform.localRotation = Quaternion.identity;
	}
}

FIXED! Only basic types can be sent through commands!