Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Minecraft:Density function: Difference between revisions

From SAS Gaming Wiki
SyncBot (talk | contribs)
Sync: updated from Minecraft
SyncBot (talk | contribs)
Sync: updated from Minecraft
Line 39: Line 39:


=== {{cd|cache_once}} ===
=== {{cd|cache_once}} ===
Renamed to {{cd|cache}}.{{upcoming|JE 26.3}} If this density function is referenced twice, it is only computed once per block position.
Renamed to {{cd|cache}}. If this density function is referenced twice, it is only computed once per block position.
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>cache_once</code>{{until|JE 26.3}} / <code>cache</code>{{upcoming|JE 26.3}}).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>cache_once</code>{{until|JE 26.3}} / <code>cache</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input to be cached.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input to be cached.
</div>
</div>


Line 60: Line 60:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>interpolated</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>interpolated</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input to be interpolated.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input to be interpolated.
** {{nbt|int|cell_size_xz}}{{upcoming|JE 26.3}}: Size in blocks of the interpolation grid cells on the X and Z axes. The number must not be negative.
** {{nbt|int|cell_size_xz}}: Size in blocks of the interpolation grid cells on the X and Z axes. The number must not be negative.
** {{nbt|int|cell_size_y}}{{upcoming|JE 26.3}}: Size in blocks of the interpolation grid cells on the Y axis. The number must not be negative.
** {{nbt|int|cell_size_y}}: Size in blocks of the interpolation grid cells on the Y axis. The number must not be negative.
</div>
</div>


Line 76: Line 76:
** {{Nbt|double|xz_scale}}: Scales the X and Z before sampling.
** {{Nbt|double|xz_scale}}: Scales the X and Z before sampling.
** {{Nbt|double|y_scale}}: Scales the Y before sampling.
** {{Nbt|double|y_scale}}: Scales the Y before sampling.
** {{nbt|double|shift_x}}{{upcoming|JE 26.3}}: Optional; A domain warp to apply on X. If not specified, no warping will be applied (equivalent to 0).
** {{nbt|double|shift_x}}: Optional; A domain warp to apply on X. If not specified, no warping will be applied (equivalent to 0).
** {{nbt|double|shift_y}}{{upcoming|JE 26.3}}: Optional; A domain warp to apply on Y. If not specified, no warping will be applied (equivalent to 0).
** {{nbt|double|shift_y}}: Optional; A domain warp to apply on Y. If not specified, no warping will be applied (equivalent to 0).
** {{nbt|double|shift_z}}{{upcoming|JE 26.3}}: Optional; A domain warp to apply on Z. If not specified, no warping will be applied (equivalent to 0).
** {{nbt|double|shift_z}}: Optional; A domain warp to apply on Z. If not specified, no warping will be applied (equivalent to 0).
</div>
</div>


Line 98: Line 98:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>shift</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>shift</code>).
** {{Nbt|string|argument}}{{until|JE 26.3}} / {{nbt|string|noise}}{{upcoming|JE 26.3}}: {{json ref|noise|Custom noise}} &mdash; The noise to sample.
** {{Nbt|string|argument}}{{until|JE 26.3}} / {{nbt|string|noise}}: {{json ref|noise|Custom noise}} &mdash; The noise to sample.
</div>
</div>


Line 106: Line 106:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>shift_a</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>shift_a</code>).
** {{Nbt|string|argument}}{{until|JE 26.3}} / {{nbt|string|noise}}{{upcoming|JE 26.3}}: {{json ref|noise|Custom noise}} &mdash; The noise to sample.
** {{Nbt|string|argument}}{{until|JE 26.3}} / {{nbt|string|noise}}: {{json ref|noise|Custom noise}} &mdash; The noise to sample.
</div>
</div>


Line 114: Line 114:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>shift_b</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>shift_b</code>).
** {{Nbt|string|argument}}{{until|JE 26.3}} / {{nbt|string|noise}}{{upcoming|JE 26.3}}: {{json ref|noise|Custom noise}} &mdash; The noise to sample.
** {{Nbt|string|argument}}{{until|JE 26.3}} / {{nbt|string|noise}}: {{json ref|noise|Custom noise}} &mdash; The noise to sample.
</div>
</div>


Line 139: Line 139:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>abs</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>abs</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input of the calculation.
</div>
</div>


Line 147: Line 147:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>add</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>add</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The second input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}: {{json ref/density function}} &mdash; The second input of the calculation.
</div>
</div>


=== {{cd|ceil}} ===
=== {{cd|ceil}} ===
Rounds the input value to positive infinity.{{upcoming|JE 26.3}}
Rounds the input value to positive infinity.


<div class="treeview">
<div class="treeview">
Line 176: Line 176:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>constant</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>constant</code>).
** {{Nbt|double|argument}}{{until|JE 26.3}} / {{nbt|double|value}}{{upcoming|JE 26.3}}: A constant value. Value between −1000000.0 and 1000000.0 (both inclusive).
** {{Nbt|double|argument}}{{until|JE 26.3}} / {{nbt|double|value}}: A constant value. Value between −1000000.0 and 1000000.0 (both inclusive).
</div>
</div>


Line 184: Line 184:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>cube</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>cube</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input of the calculation.
</div>
</div>


=== {{cd|div}} ===
=== {{cd|div}} ===
Performs division between two arguments.{{upcoming|JE 26.3}}
Performs division between two arguments.
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
Line 197: Line 197:


=== {{cd|floor}} ===
=== {{cd|floor}} ===
Rounds the input value to negative infinity.{{upcoming|JE 26.3}}
Rounds the input value to negative infinity.


<div class="treeview">
<div class="treeview">
Line 207: Line 207:


=== {{cd|invert}} ===
=== {{cd|invert}} ===
Renamed to {{cd|reciprocal}}.{{upcoming|JE 26.3}}
Renamed to {{cd|reciprocal}}.
Inverts the input (<code>1/x</code>).
Inverts the input (<code>1/x</code>).
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>invert</code>{{until|JE 26.3}} / <code>reciprocal</code>{{upcoming|JE 26.3}}).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>invert</code>{{until|JE 26.3}} / <code>reciprocal</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}: {{json ref/density function}} &mdash; The input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}: {{json ref/density function}} &mdash; The input of the calculation.
</div>
</div>


=== {{cd|log}} ===
=== {{cd|log}} ===
Computes the natural logarithm of the given input.{{upcoming|JE 26.3}}
Computes the natural logarithm of the given input.


<div class="treeview">
<div class="treeview">
Line 229: Line 229:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>mul</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>mul</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The second input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}: {{json ref/density function}} &mdash; The second input of the calculation.
</div>
</div>


Line 238: Line 238:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>min</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>min</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The second input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}: {{json ref/density function}} &mdash; The second input of the calculation.
</div>
</div>


Line 247: Line 247:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>max</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>max</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument1}}{{until|JE 26.3}} / {{nbt|double|left}}: {{json ref/density function}} &mdash; The first input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The second input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument2}}{{until|JE 26.3}} / {{nbt|double|right}}: {{json ref/density function}} &mdash; The second input of the calculation.
</div>
</div>


=== {{cd|negate}} ===
=== {{cd|negate}} ===
Negates the input.{{upcoming|JE 26.3}}
Negates the input.
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
Line 260: Line 260:


=== {{cd|pow}} ===
=== {{cd|pow}} ===
Raises the given base value to an exponent.{{upcoming|JE 26.3}}
Raises the given base value to an exponent.


<div class="treeview">
<div class="treeview">
Line 270: Line 270:


=== {{cd|round}} ===
=== {{cd|round}} ===
Rounds the input value to to the nearest integer (ties round up).{{upcoming|JE 26.3}}
Rounds the input value to to the nearest integer (ties round up).


<div class="treeview">
<div class="treeview">
Line 280: Line 280:


=== {{cd|sub}} ===
=== {{cd|sub}} ===
Performs subtraction between two arguments.{{upcoming|JE 26.3}}
Performs subtraction between two arguments.
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
Line 289: Line 289:


=== {{cd|sign}} ===
=== {{cd|sign}} ===
Computes the sign of the given input.  If positive, it returns as 1. If the input is 0, it returns 0. If negative, it returns as -1.{{upcoming|JE 26.3}}
Computes the sign of the given input.  If positive, it returns as 1. If the input is 0, it returns 0. If negative, it returns as -1.


<div class="treeview">
<div class="treeview">
Line 298: Line 298:


=== {{cd|sqrt}} ===
=== {{cd|sqrt}} ===
Computes the square root of the given input.{{upcoming|JE 26.3}}
Computes the square root of the given input.


<div class="treeview">
<div class="treeview">
Line 311: Line 311:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>square</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>square</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input of the calculation.
</div>
</div>


=== {{cd|truncate}} ===
=== {{cd|truncate}} ===
Rounds the input value to 0.{{upcoming|JE 26.3}}
Rounds the input value to 0.


<div class="treeview">
<div class="treeview">
Line 328: Line 328:


=== {{cd|gradient}} ===
=== {{cd|gradient}} ===
[[File:Gradient tiling.png|thumb|Demonstration of the different tiling options for the {{cd|gradient}} density function{{upcoming|JE 26.3}}, using both an input range of -100 to 100 and an output range of -1 to 1.]]
[[File:Gradient tiling.png|thumb|Demonstration of the different tiling options for the {{cd|gradient}} density function, using both an input range of -100 to 100 and an output range of -1 to 1.]]
Clamps the given coordinate and maps the gradient to a range.{{upcoming|JE 26.3}}
Clamps the given coordinate and maps the gradient to a range.
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
Line 338: Line 338:
*** <code>repeat</code>: The gradient will be repeated outside its boundaries.
*** <code>repeat</code>: The gradient will be repeated outside its boundaries.
*** <code>mirrored_repeat</code>: The gradient will be repeated as such that odd repetitions are mirrored, ensuring continuity between repetitions.
*** <code>mirrored_repeat</code>: The gradient will be repeated as such that odd repetitions are mirrored, ensuring continuity between repetitions.
** {{nbt|int|from_coordinate}}{{upcoming|JE 26.3}}: The coordinate at which the gradient starts.
** {{nbt|int|from_coordinate}}: The coordinate at which the gradient starts.
** {{nbt|int|to_coordinate}}: The coordinate at which the gradient ends. It must not equal {{cd|from_coordinate}}.
** {{nbt|int|to_coordinate}}: The coordinate at which the gradient ends. It must not equal {{cd|from_coordinate}}.
** {{nbt|float|from_value}}: The value at which the gradient starts.
** {{nbt|float|from_value}}: The value at which the gradient starts.
Line 345: Line 345:


=== {{cd|lerp}} ===
=== {{cd|lerp}} ===
Performs (unclamped) linear interpolation between two arguments based on an alpha.{{upcoming|JE 26.3}} The returned value is: <code>first*(1-alpha) + second*alpha</code>
Performs (unclamped) linear interpolation between two arguments based on an alpha. The returned value is: <code>first*(1-alpha) + second*alpha</code>
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
Line 359: Line 359:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>squeeze</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>squeeze</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input of the calculation.
</div>
</div>


Line 377: Line 377:


=== {{cd|y_clamped_gradient}} ===
=== {{cd|y_clamped_gradient}} ===
Replaced with {{cd|gradient}}.{{upcoming|JE 26.3}}
Replaced with {{cd|gradient}}.


Clamps the Y coordinate between <code>from_y</code> and <code>to_y</code> and then linearly maps it to a range.{{until|JE 26.3}}
Clamps the Y coordinate between <code>from_y</code> and <code>to_y</code> and then linearly maps it to a range.{{until|JE 26.3}}
Line 397: Line 397:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>half_negative</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>half_negative</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input of the calculation.
</div>
</div>


Line 419: Line 419:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>quarter_negative</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>quarter_negative</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The input of the calculation.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The input of the calculation.
</div>
</div>


Line 454: Line 454:
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>blend_density</code>).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>blend_density</code>).
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}{{upcoming|JE 26.3}}: {{json ref/density function}} &mdash; The desired density of new chunks.
** {{Nbt|string}}{{Nbt|double}}{{Nbt|compound|argument}}{{until|JE 26.3}} / {{nbt|double|input}}: {{json ref/density function}} &mdash; The desired density of new chunks.
</div>
</div>


Line 465: Line 465:


=== {{cd|distance_to_point}} ===
=== {{cd|distance_to_point}} ===
[[File:Distance to point options.png|thumb|Demonstration of the different metric options for the {{cd|distance_to_point}} density function{{upcoming|JE 26.3}}, using the distance from the point (0, 0).]]
[[File:Distance to point options.png|thumb|Demonstration of the different metric options for the {{cd|distance_to_point}} density function, using the distance from the point (0, 0).]]
Computes the distance to a fixed point using the specified distance function.{{upcoming|JE 26.3}}
Computes the distance to a fixed point using the specified distance function.


<div class="treeview">
<div class="treeview">
Line 480: Line 480:


=== {{cd|end_islands}} ===
=== {{cd|end_islands}} ===
Renamed to {{cd|end_outer_islands}}.{{upcoming|JE 26.3}}
Renamed to {{cd|end_outer_islands}}.
Samples at current position using a noise algorithm used for end islands. Its minimum value is −0.84375 and its maximum value is 0.5625.
Samples at current position using a noise algorithm used for end islands. Its minimum value is −0.84375 and its maximum value is 0.5625.
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>end_islands</code>{{until|JE 26.3}} / <code>end_outer_islands</code>{{upcoming|JE 26.3}}).
** {{Nbt|string|type}}: The ID of the density function type (in this case, <code>end_islands</code>{{until|JE 26.3}} / <code>end_outer_islands</code>).
</div>
</div>


Line 499: Line 499:


=== {{cd|ore_vein}} ===
=== {{cd|ore_vein}} ===
{{upcoming|JE 26.3}}
 
<div class="treeview">
<div class="treeview">
* {{nbt|compound}}: Root object.
* {{nbt|compound}}: Root object.
Line 513: Line 513:


=== {{cd|slice}} ===
=== {{cd|slice}} ===
Removes a dimension from the input domain by taking a "slice" along an axis with a specific coordinate (e.g. with the axis equaling y and the coordinate of 0, a slice will be taken along the XZ plane, with all values sampled at y=0).{{upcoming|JE 26.3}}
Removes a dimension from the input domain by taking a "slice" along an axis with a specific coordinate (e.g. with the axis equaling y and the coordinate of 0, a slice will be taken along the XZ plane, with all values sampled at y=0).


<div class="treeview">
<div class="treeview">
Line 607: Line 607:
|{{HistoryLine||26.2|dev=snap1|Density function {{cd|minecraft:clamp}} can now take a density function ID as an input.}}
|{{HistoryLine||26.2|dev=snap1|Density function {{cd|minecraft:clamp}} can now take a density function ID as an input.}}
|{{HistoryLine|||dev=snap5|Added density function {{cd|minecraft:interval_select}}.|Removed density function {{cd|minecraft:weird_scale_sampler}}. Its functionality has been replaced with {{cd|interval_select}}.}}
|{{HistoryLine|||dev=snap5|Added density function {{cd|minecraft:interval_select}}.|Removed density function {{cd|minecraft:weird_scale_sampler}}. Its functionality has been replaced with {{cd|interval_select}}.}}
|{{HistoryLine|java upcoming}}
|{{HistoryLine||26.3|dev=snap4|Added the following density functions:
|{{HistoryLine||26.3|dev=snap4|Added the following density functions:
* {{cd|ceil}}
* {{cd|ceil}}

Revision as of 11:17, 16 September 2026

Template:Exclusive Density functions make up mathematical expressions to obtain a number from a position, stored as Minecraft:JSON files within a Minecraft:data pack in the path data/<namespace>/worldgen/density_function. They are referenced from the Minecraft:noise router in Minecraft:noise settings.

Template:TOC

JSON format

A density function can be a constant number or an object.

If the Template:Nbt is constant, a shorthand format is:

  • Template:Nbt: A constant number. Value between −1000000.0 and 1000000.0 (both inclusive).

Marker functions

Template:Cd

Template:Until Only computes the input density once per horizontal position.

Template:Cd

Template:Until Used by the game onto final_density and should not be referenced in data packs.

Template:Cd

Renamed to Template:Cd. If this density function is referenced twice, it is only computed once per block position.

Template:Cd

Template:Until Calculate the value per 4×4 column (Value at each block in one column is the same). And it is calculated only once per column, at Y=0. Used often in combination with interpolated.

Template:Cd

Interpolates at each block in one cell based on the input density function value of some cells around. The size of each cell is size_horizontal * 4 and size_vertical * 4. Used often in combination with flat_cache.

Noise sampling functions

These density functions are used to sample noises.

Template:Cd

Samples a noise.

  • Template:Nbt: Root object.
    • Template:Nbt: The ID of the density function type (in this case, noise).
    • Template:Nbt: Template:Json ref — The noise to sample.
    • Template:Nbt: Scales the X and Z before sampling.
    • Template:Nbt: Scales the Y before sampling.
    • Template:Nbt: Optional; A domain warp to apply on X. If not specified, no warping will be applied (equivalent to 0).
    • Template:Nbt: Optional; A domain warp to apply on Y. If not specified, no warping will be applied (equivalent to 0).
    • Template:Nbt: Optional; A domain warp to apply on Z. If not specified, no warping will be applied (equivalent to 0).

Template:Cd

Samples a legacy noise. Template:Info needed

  • Template:Nbt: Root object.
    • Template:Nbt: The ID of the density function type (in this case, old_blended_noise).
    • Template:Nbt: Value between 0.001 and 1000.0 (both inclusive).
    • Template:Nbt: Value between 0.001 and 1000.0 (both inclusive).
    • Template:Nbt: Value between 0.001 and 1000.0 (both inclusive).
    • Template:Nbt: Value between 0.001 and 1000.0 (both inclusive).
    • Template:Nbt: Value between 1.0 and 8.0 (both inclusive).

Template:Cd

Samples a noise at (x/4, y/4, z/4), then multiplies it by 4.

Template:Cd

Samples a noise at (x/4, 0, z/4), then multiplies it by 4.

Template:Cd

Samples a noise at (z/4, x/4, 0), then multiplies it by 4.

Template:Cd

Template:Until Similar to noise, but first shifts the input coordinates.

Mathematical density functions

These density functions are used to perform mathematical operations.

Template:Cd

Calculates the absolute value of the input density function.

Template:Cd

Adds two density functions together.

Template:Cd

Rounds the input value to positive infinity.

Template:Cd

Clamps the input between two values.

Template:Cd

A constant value.

Template:Cd

Cubes the input (x^3).

Template:Cd

Performs division between two arguments.

Template:Cd

Rounds the input value to negative infinity.

Template:Cd

Renamed to Template:Cd. Inverts the input (1/x).

Template:Cd

Computes the natural logarithm of the given input.

Template:Cd

Multiplies two inputs.

Template:Cd

Returns the minimum of two inputs.

Template:Cd

Returns the maximum of two inputs.

Template:Cd

Negates the input.

Template:Cd

Raises the given base value to an exponent.

Template:Cd

Rounds the input value to to the nearest integer (ties round up).

Template:Cd

Performs subtraction between two arguments.

Template:Cd

Computes the sign of the given input. If positive, it returns as 1. If the input is 0, it returns 0. If negative, it returns as -1.

Template:Cd

Computes the square root of the given input.

Template:Cd

Squares the input. (x^2)

Template:Cd

Rounds the input value to 0.

Mapped density functions

These density functions map a set of values onto another set of values.

Template:Cd

File:Gradient tiling.png
Demonstration of the different tiling options for the Template:Cd density function, using both an input range of -100 to 100 and an output range of -1 to 1.

Clamps the given coordinate and maps the gradient to a range.

  • Template:Nbt: Root object.
    • Template:Nbt: The ID of the density function type (in this case, gradient).
    • Template:Nbt: Template:Cd, Template:Cd. or Template:Cd: The axis over which to define the gradient .
    • Template:Nbt: How the density function handles values outside the specified coordinate range. 3 options:
      • clamp_to_edge: outside the gradient boundaries, the value at the nearest boundary will be used.
      • repeat: The gradient will be repeated outside its boundaries.
      • mirrored_repeat: The gradient will be repeated as such that odd repetitions are mirrored, ensuring continuity between repetitions.
    • Template:Nbt: The coordinate at which the gradient starts.
    • Template:Nbt: The coordinate at which the gradient ends. It must not equal Template:Cd.
    • Template:Nbt: The value at which the gradient starts.
    • Template:Nbt: The value at which the gradient ends.

Template:Cd

Performs (unclamped) linear interpolation between two arguments based on an alpha. The returned value is: first*(1-alpha) + second*alpha

Template:Cd

First clamps the input between −1 and 1, then transforms it using x/2 - x*x*x/24.

Template:Cd

Computes a cubic spline.

Template:Cd

Replaced with Template:Cd.

Clamps the Y coordinate between from_y and to_y and then linearly maps it to a range.Template:Until

  • Template:Nbt: Root object.
    • Template:Nbt: The ID of the density function type (in this case, y_clamped_gradient).
    • Template:Nbt: The value to be mapped to from_value. Value between −4064 and 4062 (both inclusive).
    • Template:Nbt: The value to be mapped to to_value. Value between −4064 and 4062 (both inclusive).
    • Template:Nbt: The value to map from_y to. Value between −1000000.0 and 1000000.0 (both inclusive).
    • Template:Nbt: The value to map to_y to. Value between −1000000.0 and 1000000.0 (both inclusive).

Conditional density functions

These density functions are used to apply "if-then" logic.

Template:Cd

If the input is negative, returns half of the input. Otherwise returns the input. (x < 0 ? x/2 : x)

Template:Cd

Selects between a number of density functions based on an input density function and a set of threshold values.

Template:Cd

If the input is negative, returns a quarter of the input. Otherwise returns the input. (x < 0 ? x/4 : x)

Template:Cd

Computes the input value, and depending on that result returns one of two other density functions. Basically an if-then-else statement.

Other density functions

Template:Cd

Adds beards for structures (see the terrain_adaptation field in structures). Its value is added to the final_density in noise setting by the game. Should not be referenced in data packs.

Template:Cd

Used in vanilla for smooth transition to chunks generated in old versions.Template:Info needed

Template:Cd

Used in vanilla for smooth transition to chunks generated in old versions.Template:Info needed

Template:Cd

Used in vanilla for smooth transition to chunks generated in old versions.Template:Info needed

Template:Cd

File:Distance to point options.png
Demonstration of the different metric options for the Template:Cd density function, using the distance from the point (0, 0).

Computes the distance to a fixed point using the specified distance function.

Template:Cd

Renamed to Template:Cd. Samples at current position using a noise algorithm used for end islands. Its minimum value is −0.84375 and its maximum value is 0.5625.

Template:Cd

Scans through a column of an input density and returns the topmost y-level that is above 0. If no such position exists within the bounds, the Template:Nbt is returned.

Template:Cd

  • Template:Nbt: Root object.
    • Template:Nbt: The ID of the density function type (in this case, ore_vein).
    • Template:Nbt: The ore block to place.
    • Template:Nbt: The raw ore block to place.
    • Template:Nbt: The filler block to place.
    • Template:Nbt: The probability for a raw ore block to be placed instead of an ore block. Value between 0 and 1 (inclusive).
    • Template:Nbt: The probability for the ore vein to replace a block. If the value is 0 or lower, no block will be replaced.
    • Template:Nbt: The probability for an ore block or a raw ore block to be placed, as opposed to Template:Cd. If the value is 0 or lower, all blocks will be the filler block. If the value is 1 or greater, no blocks will be the filler block.
    • Template:Nbt: Overrides Template:Cd; if the value is positive, Template:Cd will always be placed.

Template:Cd

Removes a dimension from the input domain by taking a "slice" along an axis with a specific coordinate (e.g. with the axis equaling y and the coordinate of 0, a slice will be taken along the XZ plane, with all values sampled at y=0).

Removed density functions

Template:Outdated

Template:Cd

Removed in Minecraft:22w12a

The legacy "spline"

Removed in Minecraft:22w11a

Template:Cd

Removed in Minecraft:22w11a

Calculate the spline from the noise settings.

Template:Cd

Removed in Minecraft:26.2-snap5

According to the input value, scales and enhances (or weakens) some regions of the specified noise, and then returns the absolute value.

History

Template:HistoryTable

Issues

Template:Issue list

References

Template:Reflist

External links

Navigation

Template:Navbox Java Edition technical

Minecraft:de:Dichtefunktion Minecraft:fr:Fonction de densité Minecraft:ko:밀도 함수 Minecraft:pt:Função de densidade Minecraft:zh:密度函数