Chorus Flower plant, Bamboo, Sugarcane, Cactus and other plants grow instantly when supporting block is replaced with same block type
The bug
For some plants when the block supporting it is instantly (e.g. using 0-ticks) replaced with the same block type the plant will grow.
The expected behavior is that the the plant should break, or that nothing special should happen.
As it currently stands this behavior allows for mass duplication of these items on the order of tens of thousands of items per hour. Far, far faster than any conventional farming method.
This bug may relate to MC-165023 where crop growth is randomly updated via falling sand on boats.
Affected plants
- Carrots, Potatoes, Wheat, and Beetroot
- Bamboo: https://www.youtube.com/watch?v=FROPCjl2DQM
- Cactus: https://www.youtube.com/watch?v=NkV9iXii9_4
- Chorus flower: https://www.youtube.com/watch?v=Ar0Zve-AzeU
- Kelp: https://www.youtube.com/watch?v=Ctc6anMVPW4
- Sugarcane: https://www.youtube.com/watch?v=qadaI38zRZc
- Twisting vines: https://www.youtube.com/watch?v=ojiaUGdQmDk
- Weeping vines: https://www.youtube.com/watch?v=VWbc8GNnkns
How to reproduce
- Set the value for the gamerule randomTickSpeed to 0
/gamerule randomTickSpeed 0
- Build a contraption like the one shown in Chorus flower update setup (17w06a).png
and activate it
Code analysis
Based on 1.13.1 decompiled using MCPConfig
The affected blocks check in their Block.updatePostPlacement(IBlockState, EnumFacing, IBlockState, IWorld, BlockPos, BlockPos) implementation (which is called when neighboring blocks change) whether they should break because the supporting block is missing. In this case a tick is scheduled. The problem is that when this tick is executed, the support block exists again and therefore instead of being broken, the plant grows (both actions are part of the update method Block#tick).
2017-02-13, 08:38 PM
2020-07-29, 05:55 AM
2020-03-13, 02:44 PM
37
27
bamboo, beetroot, block-update, cactus, carrots, chorus_flower, duping, exploit, potato, sugarcane, tick, twisting_vines, update, weeping_vines, wheat
Minecraft 1.11.2 - 20w11a
Minecraft 1.11.2, Minecraft 17w06a, Minecraft 17w13a, Minecraft 1.12 Pre-Release 6, Minecraft 1.12, Minecraft 1.12.1, Minecraft 1.12.2 Pre-Release 1, Minecraft 1.12.2 Pre-Release 2, Minecraft 1.12.2, Minecraft 17w43a, Minecraft 17w45b, Minecraft 17w46a, Minecraft 17w47a, Minecraft 17w48a, Minecraft 17w49a, Minecraft 17w49b, Minecraft 1.13.2, Minecraft 19w03b, Minecraft 19w03c, Minecraft 19w04b, Minecraft 19w08b, Minecraft 19w09a, Minecraft 1.14 Pre-Release 2, Minecraft 1.14 Pre-Release 3, Minecraft 1.14 Pre-Release 4, Minecraft 1.14 Pre-Release 5, Minecraft 1.14, Minecraft 1.14.1, Minecraft 1.14.2 Pre-Release 2, Minecraft 1.14.2 Pre-Release 3, Minecraft 1.14.2, Minecraft 1.14.3 Pre-Release 2, Minecraft 1.14.3, Minecraft 1.14.4 Pre-Release 2, Minecraft 1.14.4 Pre-Release 4, Minecraft 1.14.4 Pre-Release 5, 1.14.4, 19w34a, 19w35a, 19w37a, 19w38b, 19w39a, 19w41a, 19w42a, 19w44a, 19w46a, 1.15 Pre-release 6, 1.15.1, 1.15.2, 20w06a, 20w07a, 20w10a, 20w11a