Simple lan game, server updating clients are not.

I am making a simple LAN game to just get my bearings in Unity Networking. All it is supposed to do is when a player clicks on a square in a grid, it changes it blue. My issue is when the LAN Host clicks on a square, it only updates locally and doesn’t update the clients. When the client clicks on a square, it updates locally and the LAN host gets updated, but other clients do not get updated.
All of my grid pieces have a network identity attached to them

Any ideas?

Heres the code:

using UnityEngine;
    using System.Collections;
    using UnityEngine.Networking;
    
    public class Player_Paint : NetworkBehaviour {
    
    	[SyncVar]GameObject syncGridPiece;
    	GameObject gridPiece;
    	
    	void Update () {
    		Paint();
    		TransmitGridColours();
    	}
    
    	void Paint(){
    		if(isLocalPlayer && Input.GetMouseButtonDown(0)){
    			RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
    			if(hit.collider != null){
    				print(GameObject.Find (hit.transform.name));
    				gridPiece = hit.collider.transform.gameObject;
    				gridPiece.GetComponent<SpriteRenderer>().color = Color.blue;
    			}
    		}
    	}
    	[Command]
    	void CmdProvideGridColourToServer(GameObject gridPiece){
    		if(gridPiece){
    			syncGridPiece = gridPiece;
    			syncGridPiece.GetComponent<SpriteRenderer>().color = Color.blue;
    		}
    		
    	}
    	[Client]
    	void TransmitGridColours(){
    		if(isLocalPlayer){
    			CmdProvideGridColourToServer(gridPiece);
    		}
    	}
    }

figured it out. needed to use ClientRpc. Code below

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

public class Player_Paint : NetworkBehaviour {
	GameObject gridPiece;

	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		Paint();
	}

	void Paint(){
		if(isLocalPlayer && Input.GetMouseButtonDown(0)){
			RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
			if(hit.collider != null){
				print(GameObject.Find (hit.transform.name));
				gridPiece = hit.collider.transform.gameObject;
				print("SettingColor");
				CmdProvideGridColourToServer(gridPiece,Color.blue);
			}
		}
	}

	[Command]
	void CmdProvideGridColourToServer(GameObject gridPiece,Color color){
		RpcTransmitGridColours(gridPiece,color);
		
	}
	[ClientRpc]
	void RpcTransmitGridColours(GameObject gridPiece, Color color){
		gridPiece.GetComponent<SpriteRenderer>().color = color;
	}
}