-
Type:
New Feature
-
Resolution: Unresolved
-
Priority:
Minor
-
None
-
Affects Version/s: None
-
None
-
4440-Spigot-e5a64e7-43f66f6 (MC: 1.21.4)
-
Yes
Saplings and potatoes are two kinds of plant in Minecraft. Potatoes are a crop, and grow from age 0 to age 7. Saplings grow from stage 0 to stage 1, then the next update to the sapling will cause it to grow into a tree. Applying bonemeal to saplings or crops has a chance of making the stage or age of the sapling or crop increase by 1.
The event BlockGrowEvent should be sent whenever potato crops, or other crops increase their age, and should also be sent when a sapling increases its stage from 0 to 1. However, the latter does not invoke the event, only the former.
The event BlockFertilizeEvent should be sent whenever the application of bonemeal causes a crop or sapling's age or stage to increase. This works for both.
To reproduce:
1. Use a plugin with the following event listener methods: @EventHandler public void onPlantGrow(BlockGrowEvent event) { - Pastebin.com
2. Use a void world, or the end, in order to prevent world events from clogging up the console.
3. Use the command /setblock ~ ~ ~ stone and add blocks around to create a platform for testing in your void. Place torches on the platform to keep it lit up.
4. Place farmland and adjacent to it water on your platform, and plant potatoes on the farmland.
5. Set /gamerule randomTickSpeed 100
6. The potatoes will grow, and send a BlockGrowEvent, which can be seen in console.
7. Break the potatoes, and plant new ones. Use bonemeal to grow them faster.
8. BlockGrowEvent and BlockFertilizeEvent will be sent, which can be seen in console.
This is expected behavior.
Next:
1. Set /gamerule randomTickSpeed 0
2. Press f3 to show debug screen
3. Plant a birch sapling on dirt, and right click it once with bonemeal
4. If f3 shows that the sapling changed stage from 0 to 1, there will be a BlockFertilizeEvent in console. If the sapling does not grow from your bonemeal, there will not be a BlockFertilizeEvent in console.
5. Break the sapling and place it again, repeating step 3 a few times to confirm this.
This is expected behavior.
Lastly:
1. Break the sapling
2. Set /gamerule randomTickSpeed 100
3. Place another birch sapling on dirt, and wait for it to grow.
4. When it grows, there will be no BlockGrowEvent shown in console, despite the fact that the sapling increased from stage 0 to 1 at some point in order to grow. (This is true, even though you cannot see this in f3, because the game does not send the block state update to the client as the change does not affect the sapling visually).
This is a bug.