I have read a lot of conflicting information on what does and does not block enemy spawns. So I went into debug mode and conducted my own experiment. I have no spreadsheet of data or pictures or video evidence, so feel free to repeat my experiment or expand upon it yourself. Hope this information is as helpful for you as it was for me!
I confirmed that workbenches, as well as several other player objects, block enemy spawns. The blocked area seems to be a 20m bubble, just like the workbenches build range (I should note that these are probably separate values though). Wards are one of the blocking structures, but they are deceptive. Their ward range is more like 30m, but their spawn block is still only 20m. Here is a full list of confirmed objects, ordered by build tab.
- Artisan table
- Blast furnace
- Spinning wheel
- Dragon bed
- Standing iron torch
- Standing wood torch
- Standing green-burning iron torch
- Hanging brazier
Control test: Placed a new spawner with no player objects using console commands (spawn Spawner_Greydwarf). A greydwarf spawned within a few seconds of placing the invisible spawner. Waited a few minutes and no more dwarves spawned, so I decided to use a new spawner on each subsequent test.
Confirmation test: Placed a workbench, placed a spawner next to it, and waited for results. No greydwarf spawns after waiting for 30 seconds, so I break the workbench. Greydwarf then spawns almost immediately.
Experimental test: Placed a workbench to block the spawn, placed another spawner, and then placed my test object. Broke the workbench and waited 30 seconds for results. Repeated this test with each buildable object to produce the list above.
Range test: Placed a workbench or other test object, placed a new spawner inside the 20m build range and another outside the 20m build range. Spawner out of range spawns. Spawner within range does not.
I made several assumptions here because I was not totally concerned with the purity of my data, just personally curious. I am assuming that the block range is a sphere because I didn't want to repeat the test vertically. I am also assuming the block range is the same for all the confirmed objects, but I only tested the range of about a 3rd of them before my curiosity was satisfied. I was mainly concerned with the Ward since it had a larger visible range than the workbench. I am assuming that biome is irrelevant to the test because others have done similar tests in other biomes. I am assuming that this experiment applies to all spawners, but I did not test other creatures or the 30 sec respawn variants. I did, however, test nests and body piles with workbenches. You can not block their spawns.