Hi, so I am currently creating a Minecraft-type building system. However, I would like to add a specific feature where if my mouse target is nil, it'll place it on the next best place. Do have in mind this is a minecraft type building. So if i'm high up in the sky and my mouse is in the sky forward, but not on the block it'll place a block 3 studs ahead of where it currently is. Here is the code to support my question!

Mouse.Move:Connect(function()
	if Mouse.Target and Equipped and Mouse.Target.Name == BlockName then
		if Mouse.TargetSurface == Enum.NormalId.Top then
			SelectionBlock.CFrame = Mouse.Target.CFrame * CFrame.new(0,height,0)
		end
		if Mouse.TargetSurface == Enum.NormalId.Bottom then
			SelectionBlock.CFrame = Mouse.Target.CFrame * CFrame.new(0,-height,0)
		end
		
		if Mouse.TargetSurface == Enum.NormalId.Left then
			SelectionBlock.CFrame = Mouse.Target.CFrame * CFrame.new(-height,0,0)
		end
		if Mouse.TargetSurface == Enum.NormalId.Right then
			SelectionBlock.CFrame = Mouse.Target.CFrame * CFrame.new(height,0,0)
		end
	end
	if Mouse.Target == nil or Mouse.Target.Name ~= BlockName then
		
		local poes = CFrame.new(Mouse.Hit.Position):PointToObjectSpace(Mouse.Origin.Position)
		local poesx = Round(poes.X,3) -- size of the blocks 3x3x3
		local poesz = Round(poes.Z,3) -- size of the blocks 3x3x3
		if poesx and poesz then
			this is where it'll go ahead
		else
			this is where its in a random position and it wont highlight
		end
		
		
	end
end)

Any help in doing this would be a huge help !