- type: Type of the surface rule, one of:
biome
,noise_threshold
,vertical_gradient
,y_above
,water
,temperature
,steep
,not
,hole
,above_preliminary_surface
, orstone_depth
. See below of extra fields for each type.- If type is
biome
(test for the biome), extra fields are as follows:
- If type is
- biome_is: (Required, but can be empty) List of biomes that result in true.
- : The ID of a biome.
- If type 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:
- noise: The ID of a noise.
- min_threshold: Min threshold of the closed interval.
- max_threshold: Max threshold of the closed interval.
- If type 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:
- If type is
- random_name: 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".
- true_at_and_below: Always succcess if the y-coord is at or below this value.
- Choices for a vertical anchor (must choose only one of three)
- false_at_and_above: 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)
- Choices for a vertical anchor (must choose only one of three)
- If type 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:
- anchor: Y level.
- Choices for a vertical anchor (must choose only one of three)
- surface_depth_multiplier: Value between -20 and 20 (both inclusive). How much it is affected by the surface layer thickness.
surfaceLayerThickness * surface_depth_multiplier
will be added intoanchor
. - add_stone_depth: 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 type 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:
- If type is
- offset: 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.
- surface_depth_multiplier: 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 theoffset
. - add_stone_depth: 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 type is
temperature
(success when the height-adjusted temperature is low enough to snow. The height-adjusted temperature depends on the biome'stemperature
andtemperature_modifier
fields and the current Y-level), no extra fields. - If type 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 type is
not
(inverts the condition), extra fields are as follows:
- If type is
- invert: The condition to invert.
- Surface rule condition
- If type is
hole
(check whether the surface layer thickness at this horizonal location is less than 0), no extra fields. - If type is
above_preliminary_surface
(checks whether it is higher than the preliminary surface. The preliminary surface height is the interpolated initial terrain height (determined byinitial_density_without_jaggedness
) minus 8 and then plus(surfaceLayerThickness - 8)
), no extra fields. - If type 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:
- offset: The offset value.
- add_surface_depth: Whether to be affected by surface layer thickness. If true, the surface layer thickness will be addded into the
offset
. - secondary_depth_range: How much it is affected by the noise
minecraft:surface_secondary
.niseValue × secondary_depth_range
will be added into theoffset
. - surface_type: Either
floor
orceiling
. Ifceiling
, 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.
- type: Type of the surface rule, one of:
Advertisement
Custom world generation/surface rule condition
Advertisement