Custom world generation/surface rule condition

** : Type of the surface rule, one of: biome, noise_threshold, vertical_gradient, y_above, water, temperature, steep, not, hole, above_preliminary_surface, or stone_depth. See below of extra fields for each type.
**; If is biome (test for the biome), extra fields are as follows:
** : (Required, but can be empty) List of biomes that result in true.
*** : The ID of a biome.
**; If is noise_threshold (Success when the noise value at this XZ losction with Y=0 is within the specified closed interval), extra fields are as follows:
** : The ID of a noise.
** : Min threshold of the closed interval.
** : Max threshold of the closed interval.
**; If is vertical_gradient (Makes the block fade upwards. Between the specified y-coords is the gradient itself. For example the gradient between bedrock and deepslate, or between deepslate and stone), extra fields are as follows:
** : A namespace ID used as the seed of the random. For example, the seed between bedrock and deepslate in the vanilla game is "minecraft:bedrock_floor", and the seed between deepslate and stone is "minecraft:deepslate".
** : Always succcess if the y-coord is at or below this value.
*** 
** : Always fails if the y-coord is at or above this value. The y-coords between the two value produces a gradient, and the probability of success in this gradient is (false_at_and_above - Y) / (false_at_and_above - true_at_and_below)
*** 
**; If is y_above (checks if it is above a XZ plane at the specified Y level. E.g. block whose Y coordinate is 0 is above Y=0 plane), extra fields are as follows:
** : Y level.
*** 
** : Value between -20 and 20 (both inclusive). How much it is affected by the surface layer thickness. surfaceLayerThickness * surface_depth_multiplier will be added into .
** : Instead of current block's Y-level, checks the value of "current block's Y-level" plus "the number of non-liquid blocks between current block's downward surface and the lowest air block directly above". For example, if block at Y=2 is air, Y=1 is water, and Y=0 is stone, when applied at the stone, the number of non-liquid blocks between current block's downward surface (in this case, Y=0 plane) and the lowest air block directly above (in this case, air at Y=2) is 1 (that is, this stone itself).
**; If is water (Check whether the offset height of the current block relative to the liquid surface (the contact surface between air and liquid) above (always a negative integer less than -1) is greater than the specified value. Always success if there's no liquid between them. For example, if there is only one liquid block between current block and the air block above, the value to check is -2), extra fields are as follows:
** : The offset height relative to the liquid surface (the contact surface between air and liquid) above. If it is set to a value greater than -1, the condition is successful only if there is no liquid between current block and the lowest air block above. If it is set to -1, it works the same with values greater than -1 in terrain generation, and always successful in carver generation.
** : Value between -20 and 20 (both inclusive). How much it is affected by the surface layer thickness. surfaceLayerThickness * surface_depth_multiplier will be added into the .
** : Instead of current block's Y-level, checks the value of "current block's Y-level" plus "the number of non-liquid blocks between current block's downward surface and the lowest air block directly above". For example, if block at Y=2 is air, Y=1 is water, and Y=0 is stone, when applied at the stone, the number of non-liquid blocks between current block's downward surface (in this case, Y=0 plane) and the lowest air block directly above (in this case, air at Y=2) is 1 (that is, this stone itself).
**; If is temperature (success when the height-adjusted temperature is low enough to snow. The height-adjusted temperature depends on the biome's temperature and temperature_modifier fields and the current Y-level), no extra fields.
**; If is steep (checks current position for steep slopes (with height difference of more than 4 blocks) that are back sun (north or east facing)), no extra fields.
**; If is not (inverts the condition), extra fields are as follows:
** : The condition to invert.
*** 
**; If is hole (check whether the surface layer thickness at this horizonal location is less than 0), no extra fields.
**; If is above_preliminary_surface (checks whether it is higher than the preliminary surface. The preliminary surface height is the interpolated initial terrain height (determined by initial_density_without_jaggedness) minus 8 and then plus ), no extra fields.
**; If is stone_depth (checks whether the distance between the current position and the terrain surface or the cave surface is less than or equal to the specified offset value), extra fields are as follows:
** : The offset value.
** : Whether to be affected by surface layer thickness. If true, the surface layer thickness will be addded into the .
** : How much it is affected by the noise . niseValue × secondary_depth_range will be added into the .
** : Either floor or ceiling. If ceiling, checks the distance to the upper surface of cave below (technically, it is the distance to the nearest liquid or air block directly below). For example, if where Y=-1 is water, and where Y=0 is stone, when applied to the stone, the distance to the nearest liquid or air block directly below (in this case, the water at Y=-1) is 0. If it isfloor, checks the distance to the terrain surface or the lower surface of cave above (technically, it is the number of non-liquid blocks between current block and the lowest air block directly above. If there is liquid between current block and the air block above, this value may be less than the actual distance to the surface of terrain or cave). For example, where Y=2 is air, Y=1 is water, and Y=0 is stone, when applying this condition at the stone, the number of non-liquid blocks between current block and the lowest air block directly above (in this case, air at Y=2) is 0.
Category:Java Edition
Category:Data packs
ja:カスタムワールド生成/surface rule condition
zh:自定义世界生成/surface rule condition