All mobs require two non-full blocks to be spawned naturally even if the mob is only one block tall.
- Create a Superflat world with the following preset
- Use for example the /say command to list all entities
→ No entity is listed
- Replace some blocks with non-full cube blocks like slabs
- Use the /say command again
→ Bats and spiders are listed
Based on 1.11.2 decompiled using MCP 9.35 rc1
The method net.minecraft.world.WorldEntitySpawner.canCreatureTypeSpawnAtLocation(SpawnPlacementType, World, BlockPos) tests for all mobs for two non-full cube blocks, regardless of the mob size. The same applies to water mobs in this method as well.