Uploaded image for project: 'Minecraft (Bedrock codebase)'
  1. Minecraft (Bedrock codebase)
  2. MCPE-187337

Generated Pale Oak trees with Creaking Hearts are rarer than in Java Edition

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • 1.21.60.21 Preview, 1.21.50.26 Preview, 1.21.50.25 Preview, 1.21.50.24 Preview, 1.21.50.22 Preview, 1.21.50.20 Preview, 1.21.50.28 Preview, 1.21.50.29 Preview, 1.21.50
    • Community Consensus
    • Multiple
    • 1313521

      The Pale Oak Java feature definition contains the following weights:

      { "chance": 0.2, "feature": "minecraft:pale_oak_creaking_checked" },
      { "chance": 0.8, "feature": "minecraft:pale_oak_checked" }

      Which comes out to a 20% chance of a Pale Heart Oak of being selected.

      However, on Bedrock Edition, the Pale Oak feature is defined as follows:

      [ "minecraft:pale_oak_tree_with_decoration_feature", 9 ],
      [ "minecraft:pale_oak_tree_with_creaking_heart_feature", 1 ]

      Which comes out to a 10% chance of a Pale Heart Oak being selected for generation.

      However, the feature weights do not significantly affect the outcome of the Heart generate due to Bedrock only scanning the northeast quadrant of the 2x2 trunk of the Pale Oak for a suitable location. Java Edition, on the other hand, allows Hearts to be placed in all four quadrants of the Pale Oak trunk. This not only causes far fewer Hearts to be generated, it also means the player always knows which corner of the oak to search when confronted by a Creaking.

      Here is a table illustrating the stark differences between snapshot 22w44a and newer and Bedrock 1.21.50.28:

             Seed           XLoc ZLoc   Java count Bedrock count
      -1106759604738884840    0     0      16          3
                            -270  380      82         40
                            -480 1000       1          3
      -7715933454100370463   -80  -40      19          8
                            -380    0      19          7
                            -700   80       2          0
                            -990  -80       1          2
      970220026128112722   -4900 -560       4          1
                            1920 1950       1          0
      5814430461651672175   -700 1050       8          1
      -4971446989647199504  -560  200      12          1
                            -600  620      13          6
      -3542109416978120429   580 2800      30         11

      Bedrock had more Hearts in only two edge case with small Pale Garden biomes where the search and branch generation worked in its favor. In every other case, there are fewer (and often far fewer) Hearts in the biome.

      One way to fix this is to increase the search to a 2x2 grid, raise the Y start from 0 to 3 to make up for the extra computational requirements, and even split the Creaking Heart Pale Oak feature into two subfeatures where the search will sometimes start at the bottom (Y 3) and sometimes start from the top (Y 6). Because there are more branches at the top, successful placements are more likely after the first row at Y 6, which should help reduce the cost of increasing the X and Z search grid.

      If 2x2 is altogether too expensive to run on mobile devices perhaps remove the Heart placement check feature and instead modify the minecraft:tree_feature to include the ability to place a single block during its branch generation?

      I added the latest iteration of the add-on I was using to test different generation strategies here: CreakingHeartParity.mcaddon.  It sacrifices vertical variety for horizontal variety. The 2x2 check is done on the XZ, but the Y is now limited to rows 4, 5, and 6 in the trunk. The weight for generating a non-Heart tree is also increased, improving performance since the 2x2 check provided more than enough Hearts. (Odds of a Heart-containing Pale Oak in this addon are 7.6%, down from the default of 10%.) It seems to run smoothly enough at 50 chunks of render distance and 12 chunks of simulation distance; however, I am using a beefy PC.

       

      Steps to Reproduce:

      • Create a new world in Creative Mode and locate a Pale Garden biome.
      • Move around using /fill ~-20 ~ ~-20 ~20 ~8 ~20 air replace pale_oak_log and /fill ~-20 ~ ~-20 ~20 ~8 ~20 air replace pale_oak_leaves to clear the garden.

      Expected Results:

      The number of Pale Hearts should roughly match that of Java Edition.

      Observed Results:

      On Bedrock there are far fewer Pale Hearts available to the player, and in certain circumstances, none, even in medium sized Pale Garden biomes.

            MCExplorer44 MCExplorer44
            Votes:
            38 Vote for this issue
            Watchers:
            26 Start watching this issue

              Created:
              Updated:
              Resolved:
              CHK: