Spawn Normalization


In Minecraft, when mobs are going to be spawned into the world, they must first selected a position to spawn in.  This means selecting a random x/y position within a chunk, and then picking a y-level within that column.  

By default, the y-level is selected uniformly from all possible y-levels, from zero to the current highest block in that column.  This is problematic for a couple reasons

  • Most y-levels within that column will not be suitable spawn space
  • Spawning is slow as a result of all of these failed attempts
  • Mob farms are only most efficient when their top block is at or close to y=0.

For example, if you had a skyblock world, and you were living at y=65, mobs would only have a 1/66 chance to actually successfully select your platform to spawn on.  This means you have to wait longer for mobs to generate, and in turn makes the experience less exciting.

However, using math, we can adjust the curves at which certain y-levels are selected.  This mod provides the ability to select a specific spawn algorithm from a list of defaults, and apply that instead of the vanilla spawn algorithm.  The algorithms provided by this mod are described in this graph:

These estimates are done with a height level of 65, but their curves can be understood as how likely a certain y-level (as a function of the height) is to be selected.  

  • Vanilla has equal probability for all height levels.
  • Surface Pref has a much higher probability to select the surface, with a higher than normal probability to select areas near the surface, dropping to lower than vanilla probabilities after about 55% max height level.
  • Skyblock has high preferences towards levels that are at or above 60% max height level, and near-zero percent chance to select values below 30% max height.
  • Two Layer has a high probability to select levels near the surface, but also a high probability to select a secondary zone at about 33% max height (allowing for surface spawns, and deep cave spawns)
  • Surface Only relegates all spawns to the surface level or blocks very nearby (to allow for water mobs to spawn).


Finally, these curves can be inverted, allowing you to receive the opposite effects (relative to height level) - meaning that the y level would become (max height - y) instead of (y).  This would mean that the inversion of Surface Only would only select levels near bedrock, and the inverse of Skyblock would have a much higher probability to select levels near bedrock.