For something like mapping in your case, you will want to use array.
Sure, there are other ways, but if everything is in a grid, then you could check for adjacent tile right away.
But if you prefer, one possibility is, you could adjust the collision mask of any frame of any sprite in the sprite editor. Perhaps, you could try expand the collision mask of your plain dirt tile a bit more, and then check whether it is overlapping other objects in question or not. But again, you will also want to check for performance in this. Having many of these at once might not be a good idea.