A have a placement script and it lets you place on objects that the mouse.Target.Name == "Baseplate" so what I am trying to do since i only call the function once, it update the mouse target over and over so that the script knows what you can place on.

Heres the script and again I am trying to update the Mouse.Target

wait(5)
print("PlacementStarted")
local PlacementHanlder = require(script:WaitForChild("PlacementModule"))
local RunService = game:GetService("RunService")

local Player = game.Players.LocalPlayer
local Mouse = Player:GetMouse()
local CraftingGui = Player.PlayerGui.ScreenGui:WaitForChild("PlayerCrafting")

local Items = game:GetService("ReplicatedStorage").Items
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local Model
local Signal
local CurrentItemName

local function UpdateTarget()
	Base = Mouse.Target
end

Mouse.Move:Connect(UpdateTarget)	
Mouse.Idle:Connect(UpdateTarget)	

function BeginPlacement()
	local ItemName = CraftingGui.Info.ItemName.Text
	
	if script.Parent.EnablePlacement.Value == true then
		RunService:BindToRenderStep("Placement", Enum.RenderPriority.Camera.Value, function()
			if Mouse.Target and Mouse.Target.Name == "Baseplate" then
									
				Plane = PlacementHanlder.new(Base, workspace.Base.ItemHolder, 1)
			
				CancelPlacement()

				Model = Items[ItemName]:Clone()
		
				CurrentItemName = ItemName	

				for _, object in pairs(Model:GetChildren()) do 
					if object:IsA("BasePart") then
						object.CanCollide = false
					end
				end
	
				Model.Parent = workspace.CurrentlyPlacing
		
				local Signal = Plane:enable(Model)
	
				Signal:Connect(function(Location, _)
					game:GetService("ReplicatedStorage").ClientPlaced:FireServer(CurrentItemName, Location[1])		

					CancelPlacement()
				end)
			end
		end)
	end
end
		
function CancelPlacement()
	script.Parent.EnablePlacement.Value = false
	if (CurrentItemName) then
		Plane:disable()
		
	if (Model.Parent) then
		Model:Destroy()
	end
		
		RunService:UnbindFromRenderStep("Placement")
		Model = nil
		Signal = nil
		CurrentItemName = nil		
	end
end

script.Parent.EnablePlacement.Changed:Connect(BeginPlacement)

Most of the important info is at the top.

Let me add that sometimes it works but most of the time it doesnt so I am confused.

Thank you for your time :)