mojira.dev
MC-154328

The Village Siege (Zombie Siege) never happens

In 1.14.2, the Village Siege seems to never happen and by looking the code, the method used to find a random position for a zombie (and for the initial test of position) always return null (because of the test about "creature can spawn" with null entityType provided).
In MCP mappings, it looks like this :

 

@Nullable
private Vec3d findRandomSpawnPos(BlockPos pos) {
   for(int i = 0; i < 10; ++i) {
      BlockPos blockpos = pos.add(this.world.rand.nextInt(16) - 8, this.world.rand.nextInt(6) - 3, this.world.rand.nextInt(16) - 8);
      if (this.world.func_217483_b_(blockpos) && WorldEntitySpawner.canCreatureTypeSpawnAtLocation(EntitySpawnPlacementRegistry.PlacementType.ON_GROUND, this.world, blockpos, (EntityType<?>)null)) {
         return new Vec3d((double)blockpos.getX(), (double)blockpos.getY(), (double)blockpos.getZ());
      }
   }

   return null;
}

and the method related for the WorldEntitySpawner.canCreatureTypeSpawnAtLocation() return false, as the method above is using a null entityType :

public static boolean canCreatureTypeSpawnAtLocation(EntitySpawnPlacementRegistry.PlacementType placeType, IWorldReader worldIn, BlockPos pos, @Nullable EntityType<?> entityTypeIn) {
   if (entityTypeIn != null && worldIn.getWorldBorder().contains(pos)) {
      return placeType.canSpawnAt(worldIn, pos, entityTypeIn);
   }
   return false;
}

 

 

Comments 2

Pretty sure they were just replaced by raids.

I think it's more like they could never happen due to how village detection works now, as the old and outdated code for zombie seiges may still be used to detect old villages that are no longer acknowledged by the game code.

Corail

coschevi

Plausible

Normal

(Unassigned)

Minecraft 1.14.2

Minecraft 1.14.3 Pre-Release 3

Retrieved