The bug
All mobs require two non-full blocks to be spawned naturally even if the mob is only one block tall.
How to reproduce
Create a Superflat world with the following preset
minecraft:stone,minecraft:air,minecraft:stone,minecraft:stone_slab
Use for example the
/say
command to list all entities/say @e[type=!player]
→ No entity is listed
Replace some blocks with non-full cube blocks like slabs
/fill ~ ~-1 ~ ~170 ~-1 ~170 stone_slab
:info: Note how the available space is still one air block, but now the block above it is a non-full block (stone slab)
Use the
/say
command again/say @e[type=!player]
→ Bats and spiders are listed
Code analysis
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.
Cannot reproduce for 1.13.1, seems to be fixed. Can anyone else reproduce?