Zombie siege: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
m (Revert edits by 107.179.233.77 (talk) unnecessary information)
Tag: Rollback
(This appears to have been wrong since somewhere between 1.14 and 1.14.4; not sure if "bell == village center" was correct at some point then changed, or if that was never correct. Anyway, update based on code analysis of 1.19.2 (plus a little of 1.14.4, which is the earliest version for which obfuscation maps are available).)
Line 10: Line 10:


=== Siege start checks ===
=== Siege start checks ===
Each village has a center, a claimed [[bell]] placed in the village's boundary.{{note|Before 1.14, this was the geometric center of all the village's doors.}} For each [[player]], the village with the center nearest to that player is a candidate for a siege when the player is less than the village's size + 1 blocks away from the center (by euclidean distance).


A player is a candidate for a siege if they are in a [[village]]{{note|name=within-village|"In a village" is defined as being in a subchunk that contains a claimed [[bed]], [[bell]], or [[job site]], or in any of the 26 subchunks in a 3×3×3 cube around such a subchunk.}} and that player is not in [[spectator mode]] or in a biome with the <code>without_zombie_sieges</code> [[tag]].
In other words, the player must essentially be within the village for a siege to be considered.


Ten attempts are made to choose a random siege starting point: first, a point 32 blocks away from the player in a random horizontal direction is chosen, and then a location is chosen (as described below) as if to spawn one zombie. If that succeeds in finding a valid zombie spawning point, the siege is started at the chosen starting point. If all ten attempts fail, the entire siege attempt fails, but another siege may be attempted on the next game tick.
If the candidate village has fewer than 10 [[beds]], fewer than 20 [[villagers]], or the village has not been "stable" (no beds added or removed) for at least 20 ticks (1 second), the next player's village is considered.


Players are always checked in order, so as long as one player remains a valid candidate later players will not be checked.
Ten attempts are made to choose a random siege starting point on a circle with a radius 0.9 times that of the village's size centered upon a village that is not within the bounds of any other village. The [[Altitude|Y value]] of the chosen point is that of the center of the village. If all ten attempts fail, the entire siege attempt fails, but another siege may be attempted on the next game tick.

If a valid siege starting point is found, a location is chosen (as described below) as if to spawn one zombie. If that succeeds in finding a valid zombie spawning point, the siege is started at the chosen starting point. Otherwise, the next player's village is considered.


=== Zombie spawning ===
=== Zombie spawning ===
During a siege, 20 attempts are made to spawn a zombie over the course of 3 seconds. For each zombie, 10 attempts are made to randomly choose a valid spawning point on the surface (i.e. on the highest block in any column) within a 16×16 horizontal distance around the chosen point. If a valid spawn point is found, a zombie is spawned.
[[File:SiegeZombiesInRoof Release1.8.png|thumb|350px|Siege zombies spawned inside a roof made of stairs and surviving in sunlight.]]

During a siege, 20 attempts are made to spawn a zombie over the course of 3 seconds. For each zombie, 10 attempts are made to randomly choose a valid spawning point within a 16×16×6 box around the chosen point. If a valid spawn point is found, a zombie is spawned.


Zombies spawned within a siege ignore player proximity and the presence of other mobs. Only the minimal spawning conditions are checked:
Zombies spawned within a siege ignore player proximity and the presence of other mobs. Only the minimal spawning conditions are checked:
* Light level must be appropriate for hostile mob spawning.
* The spawning block must be [[Opacity|transparent]] and non-[[fluid]].
* The block directly below it must have a solid top surface.
* The surface block must not prevent spawning.
* The block must be within a village.{{note|name=within-village}}
** This includes upside down [[stairs]] and [[slabs]].
* The block directly below it must not be [[bedrock]].
* The block directly above it must be transparent as well.
* The block must be within the target village.
Note in particular that siege zombies can spawn ''inside'' transparent blocks such as slabs that normally prevent mob spawning.


[[Zombie villagers]], [[husk]]s and [[drowned]] are never spawned as part of a siege, but all other variations (e.g. baby, jockey, and equipment) are determined as for normal random spawns.
[[Zombie villagers]], [[husk]]s and [[drowned]] are never spawned as part of a siege, but all other variations (e.g. baby, jockey, and equipment) are determined as for normal random spawns.


For the most part, the zombies that spawn as part of a siege behave in the same manner as normally-spawned zombies; they attack all villagers within sight, and villagers and [[iron golems]] react accordingly. However, if the zombies happen to wander away a certain distance (greater than the size of the village) from the center of the village, they return toward the village center if they are not actively pursuing a target. The zombies despawn as usual if the player is far enough away.
The zombies that spawn as part of a siege behave in the same manner as normally-spawned zombies; they attack all villagers within sight, and villagers and [[iron golems]] react accordingly. The zombies despawn as usual if the player is far enough away.


== Defense tactics ==
== Defense tactics ==
Line 44: Line 35:
== Recovery ==
== Recovery ==


If at least two villagers survive the siege, the villagers can [[Villager#Breeding and population|breed]] and repopulate the village. The village remain safe from future sieges until the population reaches 20. Without player intervention, however, it is likely for villages to be wiped out by sieges and randomly-spawned zombies, and all the villagers would be either dead or zombified.
If at least two villagers survive the siege, the villagers can [[Villager#Breeding and population|breed]] and repopulate the village. Without player intervention, however, it is likely for villages to be wiped out by sieges and randomly-spawned zombies, and all the villagers would be either dead or zombified.


Even if no villagers survive, a village may be repopulated by curing zombie villagers, or by luring in villagers from another village.
Even if no villagers survive, a village may be repopulated by curing zombie villagers, or by luring in villagers from another village.
Line 60: Line 51:
{{History|||snap=12w08a|Added [[iron golem]]s, which protect villagers against attacks such as zombie sieges.}}
{{History|||snap=12w08a|Added [[iron golem]]s, which protect villagers against attacks such as zombie sieges.}}
{{History||1.4.7|Zombie sieges no longer occur due to a bug.<ref>{{bug|7432}}</ref>}}
{{History||1.4.7|Zombie sieges no longer occur due to a bug.<ref>{{bug|7432}}</ref>}}
{{History||1.8|snap=14w25a|Zombie sieges may again occur.}}
{{History||1.8|snap=14w25a|Zombie sieges may again occur.
{{History||1.14.3|snap=Pre-Release 3|The bug that caused zombie sieges to never occur has been fixed.<ref>{{bug|154328}}</ref>
|The start positioning of zombie sieges has been fixed: sieges now start near the [[village]] perimeter rather than anywhere within the village.}}
|The start positioning of zombie sieges has been fixed: sieges now start near the [[village]] perimeter rather than anywhere within the village.}}
{{History||1.14|snap=unknown|Siege mechanics significantly changed due to changes in [[village]] determination: sieges can now start anywhere in a village, the starting point is always 32 blocks from the triggering player, minimum village population limit removed, zombies now always spawn on the surface, and spawns consider light levels.{{verify|Some or all of these changes may have happened as late as 1.14.4.}}}}
{{History||1.14.3|snap=Pre-Release 3|The bug that caused zombie sieges to never occur has been fixed.<ref>{{bug|154328}}</ref>}}
{{History||1.19|snap=22w11a|<code>without_zombie_sieges</code> tag created to replace the hard-coded check for [[mushroom fields]] biome.}}


{{History|pocket alpha}}
{{History|pocket alpha}}
Line 78: Line 71:
== Trivia ==
== Trivia ==


* Sieges cannot occur on [[mushroom fields]], but [[zombie]]s can spawn outside of the mushroom biome and walk into a nearby [[village]].
* Sieges can occur on [[mushroom fields]] if the triggering player is in an adjacent biome.<ref>{{bug|158473|resolution=WAI}}</ref>


== Gallery ==
== Gallery ==

Revision as of 21:18, 11 August 2022

This feature is exclusive to Java Edition.
 
BlockSprite blue-rose.png: Sprite image for blue-rose in Minecraft
This page describes content that exists only in outdated versions of Bedrock Edition.
 
This feature used to be in the game but has since been removed due to a bug.
A siege in progress.

Zombie sieges are in-game events where many zombies spawn in and attack a village, regardless of how well lit or walled off a village is.

Mechanics

At midnight each night (tick 18000 in Minecraft time), there is a 10% chance for the game to attempt a zombie siege that night. If a siege is to occur, attempts are made each tick to start the siege until either a siege is successfully started or the sun rises. Specifically, the siege attempt is abandoned when the sky light level reaches 12. However, inclement weather can allow siege start attempts to continue well past dawn since it reduces the sky light level.

Siege start checks

A player is a candidate for a siege if they are in a village[note 1] and that player is not in spectator mode or in a biome with the without_zombie_sieges tag.

Ten attempts are made to choose a random siege starting point: first, a point 32 blocks away from the player in a random horizontal direction is chosen, and then a location is chosen (as described below) as if to spawn one zombie. If that succeeds in finding a valid zombie spawning point, the siege is started at the chosen starting point. If all ten attempts fail, the entire siege attempt fails, but another siege may be attempted on the next game tick.

Players are always checked in order, so as long as one player remains a valid candidate later players will not be checked.

Zombie spawning

During a siege, 20 attempts are made to spawn a zombie over the course of 3 seconds. For each zombie, 10 attempts are made to randomly choose a valid spawning point on the surface (i.e. on the highest block in any column) within a 16×16 horizontal distance around the chosen point. If a valid spawn point is found, a zombie is spawned.

Zombies spawned within a siege ignore player proximity and the presence of other mobs. Only the minimal spawning conditions are checked:

  • Light level must be appropriate for hostile mob spawning.
  • The surface block must not prevent spawning.
  • The block must be within a village.[note 1]

Zombie villagers, husks and drowned are never spawned as part of a siege, but all other variations (e.g. baby, jockey, and equipment) are determined as for normal random spawns.

The zombies that spawn as part of a siege behave in the same manner as normally-spawned zombies; they attack all villagers within sight, and villagers and iron golems react accordingly. The zombies despawn as usual if the player is far enough away.

Defense tactics

Main article: Zombie siege defense

Recovery

If at least two villagers survive the siege, the villagers can breed and repopulate the village. Without player intervention, however, it is likely for villages to be wiped out by sieges and randomly-spawned zombies, and all the villagers would be either dead or zombified.

Even if no villagers survive, a village may be repopulated by curing zombie villagers, or by luring in villagers from another village.

Video

History

[hide]Java Edition Classic
June 10, 2009Notch promised to have an expansion pack adding zombie sieges, but never made it.
[hide]Java Edition
1.2.1Zombie sieges added by Jon Kågström.
Villagers repopulate villages based on how many houses are available.
Lua error in Module:Version_link at line 117: attempt to concatenate local 'text' (a nil value).Added iron golems, which protect villagers against attacks such as zombie sieges.
1.4.7Zombie sieges no longer occur due to a bug.[1]
1.8Zombie sieges may again occur.
The start positioning of zombie sieges has been fixed: sieges now start near the village perimeter rather than anywhere within the village.
1.14Siege mechanics significantly changed due to changes in village determination: sieges can now start anywhere in a village, the starting point is always 32 blocks from the triggering player, minimum village population limit removed, zombies now always spawn on the surface, and spawns consider light levels.[verify]
1.14.3The bug that caused zombie sieges to never occur has been fixed.[2]
1.19without_zombie_sieges tag created to replace the hard-coded check for mushroom fields biome.
[hide]Pocket Edition Alpha
v0.9.0Added zombie sieges.
[hide]Bedrock Edition
1.11.0Zombie sieges have been removed, due to a bug.[verify]
[hide]Legacy Console Edition
Xbox 360 Xbox One PS3 PS4 PS Vita Wii U Switch
TU12CU1Added zombie sieges.

Issues

Issues relating to "Siege" are maintained on the bug tracker. Issues should be reported and viewed there.

Java Edition

  • MC-113979 – Zombies of village siege spawn more likely in negative direction
  • MC-155713 – Zombie siege in new village with one villager

Bedrock Edition

  • No open issues found.

Trivia

Gallery

See also

Notes

  1. Jump up to: a b "In a village" is defined as being in a subchunk that contains a claimed bed, bell, or job site, or in any of the 26 subchunks in a 3×3×3 cube around such a subchunk.

References

  1. 7432
  2. 154328
  3. 158473 — resolved as "Works As Intended".