How to make the turret not placeable on walls?

So I am working on a little game where you can place turrets and deffend points and I have this small issue. I can place turrets everywhere, even on walls and I dont want that. How can I make the turrets not placeable on walls ?

Here is the script:

    public GameObject blueprintGreen;
    public GameObject blueprintRed;
    public GameObject turret;

    private GameObject moveableBlue;
    private bool blueprintOn;

    [SerializeField]
    private Vector3 offset;

    [SerializeField]
    private float rotation;

    [SerializeField]
    private LayerMask mask;

    // Start is called before the first frame update
    void Start()
    {
        blueprintOn = false;
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Q) && blueprintOn == false)
        {
            BluePrint();
        }
        if (Input.GetKeyDown(KeyCode.Mouse0) && blueprintOn == true)
        {
            BuildTurret();
            Destroy(moveableBlue);
            blueprintOn = false;
            rotation = 0f;
        }

        if(Input.GetKey(KeyCode.Z) && blueprintOn == true)
        {
            rotation -= 2.5f;
        }
        if(Input.GetKey(KeyCode.X) && blueprintOn == true)
        {
            rotation += 2.5f;
        }

        if (blueprintOn)
        {
            MoveBluePrint();
        }
    }

    void BluePrint()
    {
        moveableBlue = Instantiate(blueprintGreen);
        blueprintOn = true;
    }

    void MoveBluePrint()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        RaycastHit rayCast;
        if(Physics.Raycast(ray, out rayCast, mask))
        {
            moveableBlue.transform.position = rayCast.point + offset;
            //moveableBlue.transform.rotation = Quaternion.FromToRotation(Vector3.up, rayCast.normal);
            if (blueprintOn == true) moveableBlue.transform.rotation = Quaternion.Euler(0f, rotation, 0f);
        }
    }

    void BuildTurret()
    {
        Instantiate(turret, moveableBlue.transform.position, moveableBlue.transform.rotation);
    }

Hi

you can use tags or layers and check whether the hit gameobject has the correct tag. For example, with the tag “Wall” assigned to all walls, you can check for it using:

 void MoveBluePrint()
 {
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

     RaycastHit rayCast;
     if(Physics.Raycast(ray, out rayCast, mask))
     {
         if(rayCast.transform.tag.Equals("Wall"))
               return;
         moveableBlue.transform.position = rayCast.point + offset;
         //moveableBlue.transform.rotation = Quaternion.FromToRotation(Vector3.up, rayCast.normal);
         if (blueprintOn == true) moveableBlue.transform.rotation = Quaternion.Euler(0f, rotation, 0f);
     }
 }