The spawner block and tile-entity spawns an entity, chosen by weighted random selection, every few seconds if there are less than a certain amount of that mob in an area of the spawner, all chosen by the NBT of the spawner.
The world-gen area of a spawner is an 8x3x8 rectangular prism centered on the y-center of the [north/south?]-[east/west?], or [+/-]x - [+/-]y corner of the spawner. This area is where the spawned entities' "feet", or the bottom of their hit-box spawns. If there isn't enough (air-?)space for the mob then the spawner will try another position? or wait for the NBT defined timer to trigger another check.
Specific mob reqirements Edit
Most mobs require the target block to have a specific light level range, or a specific block set below it.
- Cow - [Light Level] - Requires grass underneath?
- Sheep - [Light Level] - Requires grass underneath?
- Silverfish - 11 or below - If stone underneath then ignores light level
- Zombie - [Light Level] - No specific requirements?
Spawners as predecessor of command blocks Edit
Since the snapshot 12w26a, spawners were able to spawn mobs with specific nbt tags. Since that point, spawners have often been edited with 3rd party programs and then used in mapmaking and non-survival friendly contraptions, since they were able to imitate many functions, that can now be easily done using command blocks. Command blocks were already present during the time of spawner technology, but many of the commands they have nowadays, weren´t there yet. Nowadays, spawners aren´t used anymore, because command blocks are easier to understand and less glitchy.
Spawners are capable of doing the following things, that people nowadays do with command blocks:
Summoning mobs: Edit
By including custom position data in the nbt tag of the spawned mobs, spawners are able to spawn specific mobs at specific locations, with specific nbt tags.
Setting blocks: Edit
By spawning falling sand entities with custom tile Id´s and custom position data, spawners are able to place any block on any preexisting block in the world. This can be used to generate entire structures.
Deleting blocks: Edit
This method was one of the later methods, that has been discovered. If the "Time" nbt tag of a falling sand entity is 0, it will check, whether the block it is in has the same block id as the falling sand entity itself. If that´s the case, it will delete that block.
Testing for players in specific areas: Edit
Since spawners aren´t active all the time, but instead only, if a player is present within a certain radius (which is stored in the nbt data, and can be modified), spawners can be used to detect, when a player enters a certain location.