Bedrock's sculk patch and decorative vein feature files contain the "can_place_sculk_patch_on" and "can_place_on" objects which tell those generators which blocks they can be attached to when starting a new patch during world generation.
Currently, this object only contains entries for stone (which covers all types of stone due to the object only accepting legacy id's) grass, dirt, and deepslate. However, as seen in the attached screenshots, Java Edition allows catalysts and veins to be placed on many other block types, including most of the other solid deepslate variants, planks, and even gray wool. (I could not verify if catalysts can be placed on polished deepslate - I could not find an example in Java Edition.)
Note that this is separate from whether any of these blocks get converted to sculk when a sculk patch spreads out below the catalyst - that logic appears to be working properly. This only tells the patch generator whether to generate a patch or skip a particular iteration.
The observed result in Bedrock is structures which lack the extra sculk growth control block (e.g, city centers and tall ruins to name a few) never have any sculk catalysts placed on them which in turn inhibits most sculk growth on those structures, unlike Java Edition.
The two feature files:
- features\sculk_patch_feature.json and
should have their "can_place_sculk_patch_on" ("can_place_on" for the veins feature file) object modified to look something like this:
Even though it was mentioned earlier, wool wasn't included because that would place catalysts on the camp site structures and while the wool will not get converted to sculk, it is not a behavior I observed on Java Edition. Unfortunately, as explained earlier, the placement object appears to only accept legacy ids so an id like "minecraft:gray_wool" doesn't work.
Grass and dirt were removed because dirt never appears in the Deep Dark and placing catalysts on the grass inside the city center secret room seems undesirable.
The "features\sculk_patch_feature_ancient_city.json" file was left alone because I believe those sculk patches always grow out from the special control blocks embedded in the structure. I'm not sure of the purpose of having a filter to limit placement of the sculk catalyst in those instances.
Finally, there is a case to be made to add "minecraft:sculk" to the list in "features\sculk_patch_feature.json" to help generate bigger sculk patches and more shriekers. (See MCPE-154229 and
MCPE-153525.) Currently, when a catalyst cannot be placed on existing sculk the iteration fails and is wasted. Instead, it could be used to help grow the existing sculk patch.