Noise

Minecraft Wiki article. Categories: Java_Edition, Upcoming, Java_Edition_upcoming_tag, Articles_to_be_expanded, Java_Edition_upcoming, Data_packs

📌 Mirrored from Minecraft Wiki

This article is reproduced from Noise on the Minecraft Wiki. Mirrored from revision 3704351. It is licensed CC BY-NC-SA 3.0 by the Minecraft Wiki contributors — not under the Codex’s CC BY-SA 4.0, and it may not be used commercially. Edits belong upstream, not here.

This feature is exclusive to Java Edition.
 
An example sample of the minecraft:continentalness noise

A noise is a technical JSON file that can be referenced by a density function and surface rule. They are stored within a data pack in the folder data/<namespace>/worldgen/noise.

In addition to being called by density functions and surface rules, there are also some noises with hard-coded usage:

  • minecraft:surface: Affects the surface layer thickness in surface rules.
  • minecraft:surface_secondary: Used as the thickness of additional surface layer in surface rules.
  • minecraft:clay_bands_offset: Used to generate badland terracotta bands in bandlands surface rules.
  • minecraft:badlands_pillar, minecraft:badlands_pillar_roof, minecraft:badlands_surface: Used when generating badland hoodoos in minecraft:eroded_badlands biome.
  • minecraft:iceberg_pillar, minecraft:iceberg_pillar_roof, minecraft:iceberg_surface: Used when generating iceberg terrain feature in minecraft:frozen_ocean and minecraft:deep_frozen_ocean biomes.

JSON format

  • [NBT Compound / JSON Object]: Root object.
    • [Int] firstOctave​[until: JE 26.3] / [Int] base_octave​[upcoming: JE 26.3]: First octave. If [Boolean] legacy_random_source in the noise settings is true, it must be an integer less than or equal to 1, otherwise the value range is not unlimited.
    • [NBT List / JSON Array] amplitudes​[until: JE 26.3] / [NBT List / JSON Array] amplitude_modifiers (optional)​[upcoming: JE 26.3]: A scaling factor to apply to each octave. The number of elements in the list must match octave_count. If not specified, it defaults to 1.0.​[upcoming: JE 26.3] Amplitudes of sub-noise. The frequency of a sub-noise at index (from 0) in the list is 2^(- firstOctave + index), and the amplitude (the value of the sub-noise ranges from -amplitude to +amplitude) of this sub-noise is about 1.04 * doubleValueAtIndex * 2^(sizeOfThisList - index - 1) / (2^sizeOfThisList - 1) (assuming the range of 3D Improved Perlin Noise is ±1.04). For each sub-noise, two 3D improved perlin noises are created and their average is taken. The final range of this noise value is ± 10 * sumOfSubNoises / ( 3 * ( 1 + 1 / m ) ), where m is the number of elements in the list after removing the leading and trailing zero elements. If [Boolean] legacy_random_source in the noise settings is true, the length must be less than or equal to 1-firstOctave. If false, the length is unlimited.​[until: JE 26.3]
      • [Double]: A double value for a sub-noise.
    • [Float] base_amplitude​[upcoming: JE 26.3]: A scale factor to apply to the noise output. It must not be negative.
    • [Int] octave_count​[upcoming: JE 26.3]: The number of octaves to sample. Value between 1 and 32 (inclusive).
    • [Boolean] normalize​[upcoming: JE 26.3]: Controls how the output amplitude should be normalized. If true, base_amplitude is the expected amplitude of the output (i.e., 99.7% of all samples in [-base.amplitude; base.amplitude]). If false, the base amplitude is instead the amplitude of the first octave. If "legacy", it inherits the same normalization behavior as expressed by the previous format. If not specified, it defaults to true.

History

This section is missing information about: when it was added.
 
Please expand the section to include this information. Further details may exist on the talk page.
Upcoming Java Edition
26.3snap6Noises now define a fractal Brownian motion (fBm) configuration, producing approximate output vales fitting a normal distribution.
Renamed the following fields:
  • amplitudes to amplitude_modifiers
  • firstOctave to base_octave
Added the following fields:
  • base_amplitude
  • normalize
  • octave_count
snap7Noises are no longer evaluated with double-precision floating point values, but instead with single-precision.

Sources