Background context:
Testing the fix of MC-257540 , to ensure the results match the original pre 1.18 behavior, one aspect still acted differently from expected. Looking at the code change, it reflected the other examples of adjustedTickDelay usage, leading me to believe there is a different bug at play.
The bug:
When firing dispensers 1 tick apart to the same destination block, one is completely ignored despite it has valid conditions to perform it’s action. This means have 4 dispensers triggering on different ticks, only 2/4 will consume items, when originally all four did.
There are two different methods to verify the bug exists with this design.
#1 bonemeal consumption (chests)
#2 shear consumption (top dispensers/ barrels), check durability use
How to test yourself:
Download attached world file containing the farm located in the end next to the fountain.
Load the world in whatever version you want to test (1.17.1 or 1.21.8/25w32a)
Check before each test run (of any the testing methods) that:
There is no sheep already in the farm (remove it if so)
All bonemeal chests are fully stocked (if doing #1 method)
Shear dispensers are filled with all brand new shears (if doing #2 method)
There is a grass block with a short grass block on top
Flip the lever to turn on the farm, you should hear very fast and loud clicking occurring on every game tick (20 times/sec).
Press a button on one of the command block to place a sheep into the cell. ONLY HAVE ONE SHEEP IN FARM NO MORE since it will break otherwise.
Observe and record the data based on your selected method of measurement. (baby sheep = faster result but no shear use)
Test Results
On 1.17.1, all bonemeal dispensers are used, along with the all four shear dispensers assuming you used an adult sheep.
On 1.21.8/25w32a only half the dispensers are used, the other two are NEVER used. The pair that does work is always separated by two game ticks. It might not be the same pair if performing multiple tests, but always 2/4.
Impact:
- for single sheep, you have to build the whole thing for it to work at max speed but only half of it will actually do the work (and you don’t know which half until boot up)
- more mutli-sheep designs (not the one in world download), could possibility yield with lower rates or higher odds of farm breakage if using the end grass method)
(haven’t looked into if this behavior affects other things besides sheep farms)
Long shot ideas on the cause (guessing without coding knowledge)
maybe it is a side effect of adjustedTickDelay? If so then pre-21w39a or post-21w39a might be where the bug started?
Update order change?
Attachments
Comments 2
Hello, Dispensers work fine in odd and even ticks. It’s sheep eating grass that now only occurs every second tick for optimization reasons. While it is not ideal that those tick alignments are visible in farms like yours, they should still work fine. The second set of dispensers should start taking over once the first one runs out.
We consider this issue a Won't fix
which means there is no specific plans to track or fix this issue by itself, but it might get addressed by future system reworks eventually.
Can confirm.