Kelp stops growing prematurely, at least in most cases. This cessation of natural growth is permanent for a given kelp plant, but growth can be resumed by breaking any kelp block in the stalk. Growth of a plant can also be resumed (sometimes) by causing a block update to the topmost kelp block of the stalk. When either of these methods is used, the growth will eventually stop prematurely again, but at a new maximum height. Note that bone meal cannot be used to resume growth.
The height at which any given plant stops growing is variable, but is not random. In a fresh copy of a world imported from a backup, any given kelp plant will always stop growing at the same height (but different plants will stop at different heights), So for a single plant, the behavior is reproducible, but at the scale of a kelp farm the maximum growth height appears to be randomly determined.
The normal mechanics of kelp growth that are intended to limit how high a plant grows have been eliminated as possible causes of this behavior.
- The block above the top kelp block is water or flowing_water.
- The kelp's age property (examined with multiple 3rd party tools) is less than 25. In fact, it has been observed to be 0 in some cases. As additional evidence, placing and then breaking a solid block above the kelp will sometimes cause it to resume growing, so it must have had age < 25 when it was stopped.
In a kelp farm, a piston is used to break a kelp plant that has grown to a certain height or for a certain length of time. Each time it's broken, its top block is randomly assigned a new age, which determines how high the plant can grow before the next harvest cycle. (I believe the intent is to produce a more natural looking kelp bed by preventing all the plants from topping out at the same height.) The kelp farm is designed with the piston positioned to break the second block of the plant so that, regardless what the randomly assigned age may be, the plant is always guaranteed to grow high enough to be broken again during a later harvest cycle.
This bug thwarts that design because each time the piston breaks the plant, the plant may become affected by the bug and cease growing at some effectively random height. Most of the time, that height will still allow it to grow high enough to be broken again. But the shortest maximum height that can occur this way is 1, so from time to time a plant will become unable to grow up in front of the piston any more. Once that happens, its bug-imposed maximum height cannot change, so the plant will never grow again without intervention.
Because the bug-imposed maximum height is randomly determined, a farm will start out growing kelp at a rapid pace, but as more and more plants become stuck at maximum height 1 and stop growing, the output of the farm declined over time until ultimately it produces no kelp at all.
Steps to reproduce:
1. Import the world MCPE-57330 right after building, no growth.mcworld. This world contains a single kelp block in a miniscule farm. The kelp block is known to be affected by the bug and has a maximum growth height of 2, despite the actual age of the kelp being 0. The world's randomtickrate is set to 300 to speed up the testing process.
2. Wait for the kelp to grow at least 2 blocks, which should activate the observer and fire the piston to break the kelp.
The kelp eventually grows to 3 blocks in height, which triggers the observer, which fires the piston to break the kelp. (I didn't actually connect the observer output to the piston, but it doesn't matter because the kelp never grows high enough anyway.)
The kelp grows to 2 blocks in height, then stops growing forever.
As a hunch, this might be related to the fix for
MCPE-50175. That fix eliminated large numbers of erroneously generated pending chunk data elements associated with kelp farms, which was causing extreme lag as they continued accumulating and were not being deleted. If creating and destroying pending chunks data is part of the normal processing logic for kelp, which seems likely given the association with kelp farms, it might be that the fix was too aggressive in eliminating them, with the result that a necessary trigger for resuming deferred kelp growth under certain circumstances is no longer happening. The fix was implemented in 1.14.0, which is the same release when people started reporting this bug.