Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-239790

Multi noise and terrain shape sample noises at 1/4 the scale

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Works As Intended
    • None
    • 21w42a, 21w43a, 21w44a
    • Unconfirmed
    • (Unassigned)

      The Bug

      For the terrain shape and biome placment the 5 noises "continentalness", "erosion", "ridge" (aka weirdness), "temperature, and "vegetation" (aka humidity) are used at 4 times the scaling than other noises are used (i.e. for noise caves and the surface rules).

      Why is this relevant?

      1. The firstOctave setting of the noises has inconsistent effects depending on where the noise is used - if it is used as part of the multi noise biome placement the firstOctave is de facto reduced by 2
      2. When using the same noise in different places - i.e. using the continentalness noise in a surface rule - the noise values do not match.

      How to Reproduce

      The attached datapack uses a surface rule with a noise_threshold directly referencing the continentalness. The expected result would be red concrete at all land positions and stone in the oceans.

      1. Create a new world in creative mode with the attached datapack (and seed 3)
      2. /execute in minecraft:overworld run tp @s 0.50 400.00 0.50 0.0 90.00
      3. Increase the render distance as needed
      4. Notice that the stone pattern matches the water pattern at a different scale

      This shows that the surface rule and multi-noise system sample the noise at different scales.

      Detailed description of the datapack:

      1. The firstOctave of the contientalness is set to -5 in order to be able to see enough of the noise on one screen
      2. Biome placement is set to only plains
      3. The surface rule is replaced by:
        "surface_rule": {
                "sequence": [
                    {
                        "if_true": {
                            "noise": "minecraft:continentalness",
                            "min_threshold": -0.19,
                            "max_threshold": 5.0,
                            "type": "minecraft:noise_threshold"
                        },
                        "then_run": {
                            "result_state": {
                                "Name": "minecraft:red_concrete"
                            },
                            "type": "minecraft:block"
                        },
                        "type": "minecraft:condition"
                    }
                ],
                "type": "minecraft:sequence"
            },

      The datapack thus places red concrete anywhere that the continentalness is larger than -0.19. This matches the continentalness value that causes the terrain shaper to generate above water terrain. Therefore we would expect the red concrete placement to match the above water terrain.

            Unassigned Unassigned
            CC_fan jacobsjo
            Votes:
            21 Vote for this issue
            Watchers:
            12 Start watching this issue

              Created:
              Updated:
              Resolved: