Mojira Archive
MC-59440

Siege zombies spawn inside some blocks

The bug

Siege zombies will spawn on the dirt/stone block underneath farmland blocks, slabs, and other non-opaque blocks. If there are two layers of non-opaque blocks, they can even spawn completely buried and unable to escape.

Note this is not the same issue as MC-57831, where mobs from spawners will spawn inside fully-opaque blocks.

How to reproduce

Village sieges only happen

  • when the moon is at the zenith
  • when a player (not being a spectator) is nearby
  • when no second village is close
  • when the village has at least 10 doors
  • when the village has at least 20 villagers
  • with a chance of 1 / 10

Because a siege only happens with a chance of 1 / 10 it is easier to cause one by having a clock (for example repeater) setting the time to day, waiting a short moment (for example one redstone tick), setting the time to 18000 and then waiting a little bit longer.

  1. Create a Superflat world with the following preset
    3;minecraft:stone,minecraft:stone_slab,minecraft:web;1;village
    
  2. Get to a nearby village, for example by using /locate Village, and wait for the zombies to spawn

Code analysis

Based on 1.11.2 decompiled using MCP 9.35 rc1

Village sieges only require the method net.minecraft.world.WorldEntitySpawner.canCreatureTypeSpawnAtLocation(SpawnPlacementType, World, BlockPos) to return true. This means zombies can spawn

  • in not-normal cube blocks
  • even if there are already entities at that position
  • right next to a player
  • right next to light sources

Note: This method should probably not be used anymore because it always checks for two blocks even if the mob is smaller.