Block state provider

This feature is exclusive to Java Edition.
 
This article is a work in progress.
 
Please help expand and improve it. The talk page may contain suggestions.

A block state provider is used to provide a (potentially randomized) block and block state to be placed by configured features.

JSON Format

Block state providers are defined using the following format:

Types

The following block state provider types exist.

simple_state_provider

Specifies a single block state directly

  • [NBT Compound / JSON Object]: A block state provider
    • [String] type: simple_state_provider
    • [NBT Compound / JSON Object] state: The block state to use.
      • Block state see Template:Nbt inherit/block state/template

rotated_block_provider

Randomly rotates axially-rotated blocks, such as logs, chain.

  • [NBT Compound / JSON Object]: A block state provider
    • [String] type: rotated_block_provider
    • [NBT Compound / JSON Object] state: The block ID to use. The block properties are ignored.
      • Block state see Template:Nbt inherit/block state/template

weighted_state_provider

Chooses a block state from a weighted list.

  • [NBT Compound / JSON Object]: A block state provider
    • [String] type: weighted_state_provider
    • [NBT List / JSON Array] entries: (Cannot be empty) A weighted list of block state entries.
      • [NBT Compound / JSON Object] A block state and its corresponding weight.
        • [NBT Compound / JSON Object] data: The block state to use.
          • Block state see Template:Nbt inherit/block state/template
        • [Int] weight: The weight of this entry.

randomized_int_state_provider

Assigns a random value to an integer block property.

  • [NBT Compound / JSON Object]: A block state provider
    • [String] type: randomized_int_state_provider
    • [String] property: The name of a block property.
    • [Int][NBT Compound / JSON Object] values: The value of the block property.
      • Int provider see Template:Nbt inherit/int_provider/template
    • [NBT Compound / JSON Object] source: Another block state provider that specifies the source of the block state.
      • Block state provider see Template:Nbt inherit/block state provider/template

noise_provider

Randomly chooses a block state according to a noise value.

  • [NBT Compound / JSON Object]: A block state provider
    • [String] type: noise_provider
    • [Long] seed: The seed of the noise.
    • [NBT Compound / JSON Object] noise: A noise.
    • [Float] scale: Horizontal scale of the noise. Must be a positive value.
    • [NBT List / JSON Array] states: (Cannot be empty) List of optional block states.
      • [NBT Compound / JSON Object]: A block state.
        • Block state see Template:Nbt inherit/block state/template

dual_noise_provider

Randomly chooses a block state according to two noise values.

  • [NBT Compound / JSON Object]: A block state provider
    • [String] type: dual_noise_provider
    • [Long] seed: The seed of the noise.
    • [NBT Compound / JSON Object] noise: A noise.
    • [Float] scale: Horizontal scale of noise. Must be a positive value.
    • [NBT Compound / JSON Object] slow_noise: The noise used for the first selection.
    • [Float] slow_scale: Horizontal scale of the slow noise. Must be a positive value.
    • [NBT Compound / JSON Object] variety: The number of block states that selected out by slow noise.
      • [Int] min_inclusive: The min number of block states after selection by slow noise. Must be an integer equal to or greater than 1.
      • [Int] max_inclusive: The max number of block states after selection by slow noise. Must be an integer equal to or less than 64, and must be greater than [Int] min_inclusive.
    • [NBT List / JSON Array] variety: Shorthand version of [NBT Compound / JSON Object] variety.
      • [Int]: Min number. Must be an integer equal to or greater than 1.
      • [Int]: Max number. Must be an integer equal to or less than 64, and must be greater than the min number.
    • [Int] variety: Shorthand version of [NBT Compound / JSON Object] variety when the min equals to the max. Value between 1 and 64 (both inclusive).
    • [NBT List / JSON Array] states: List of block states to choose from.
      • [NBT Compound / JSON Object]: A block state.
        • Block state see Template:Nbt inherit/block state/template

noise_threshold_provider

Uses different block states when a noise value above or below the threshold.

  • [NBT Compound / JSON Object]: A block state provider
    • [String] type: noise_threshold_provider
    • [Long] seed: The seed of the noise.
    • [NBT Compound / JSON Object] noise: A noise.
    • [Float] scale: Horizontal scale of noise. Must be a positive value.
    • [Float] threshold: Value between -1.0 and 1.0 (inclusive). The threshold of the noise value. If the noise value is lower than this value, the block states in low_states will be selected.
    • [Float] high_chance: Value between -1.0 and 1.0 (inclusive). If the noise value is higher than the threshold, the block states in high_states will be selected with a probability of high_chance.
    • [NBT Compound / JSON Object] default_state: Default block state. These block states is used when the noise value is higher than threshold but high_states is not selected according to high_chance.
      • Block state see Template:Nbt inherit/block state/template
    • [NBT List / JSON Array] low_states: (Cannot be empty) List of block states to choose from when lower than threshold.
      • [NBT Compound / JSON Object]: A block state.
        • Block state see Template:Nbt inherit/block state/template
    • [NBT List / JSON Array] high_states: (Cannot be empty) List of block states to choose from when higher than threshold.
      • [NBT Compound / JSON Object]: A block state.
        • Block state see Template:Nbt inherit/block state/template

Navigation