In-world yeast growth has positional and directional issues
Vectrobe opened this issue ยท 12 comments
Describe the bug
This took a bit of tomfoolery to figure out what was wrong, but eventually I found out its because of how position and direction in lines 56 and 59 is used, which ends up with the only ever valid position and direction for yeast propagation, to be from yeast placed directly above a water source with the sugar already floating on top of the water. Water being above the yeast immediately deletes the yeast source and the normal expected method of going around any X or Z neighbours just doesnt do anything at all.
https://github.com/TeamPneumatic/pnc-repressurized/blob/0c1d5843cb5f895cb0b31522c76a8077a5c7ad6b/src/main/java/me/desht/pneumaticcraft/common/fluid/FluidYeastCulture.java#L59C1-L59C57
How to reproduce the bug
X and Z directions with sugar dropped in

Yeast in bottom > sugar dropped in > water placed when sugar floats > water just deletes the yeast anyway (but with a flow block, not a second water source)

however the inverse; water in bottom > sugar and wait for it to float > yeast on top and immediately the water is converted, with one sugar consumed in the stack as expected


Expected behavior
well this of course
Additional details
No response
Which Minecraft version are you using?
1.21
Which version of PneumaticCraft: Repressurized are you using?
8.2.9
Crash log
No response
In fact further still just letting the sugar float on the top yeast and replacing the one below with water, repeats the recipe as normal, so for some reason only the down direction is being performed, which seems to point towards something wrong with the Direction and/or BlockPos classes themselves, but I'm not sure how
I'm wondering if switching the neo version from .69 to something newer and rebuilding might just fix the issue on its own, havnt found anything specific in the neo releases changelog but it does just seem like one of those things a miss-match with deobfuscation can cause
the problem is that the yeast fluid block is not ticking unless specifically a block update occurs in the space it would spread to
That's intended behaviour and is explicitly documented in the manual, on the last page of the "Yeast Culture" entry.
I just had a play with this, and I'm not having a problem getting it to convert, with water horizontally adjacent to the yeast.
See this example: https://streamable.com/vw91fk
When the water source block forms next to the yeast, it's converted within a second into another yeast block, assuming there's still sugar in the first yeast block.
you know what, just figured it out, the problem is that the yeast fluid block is not ticking unless specifically a block update occurs in the space it would spread to, so for example placing a slab inside the water block it would spread to, and then removing it, triggers the yeast block to tick
piston method also works, but not reliably, the yeast flow and source blocks also get pushed by the piston instead of being replaced as normal fluids would, not sure if this should be intentional or not...
or at least the yeast flow block shouldnt be pushed like it currently does, since this results in undefined behavior
oh and to further clarify as well; tested with neoforge build 69 as well as 133, behavior was identical between them
I checked again in the manual and it specifically mentions placing water to be the trigger, however in testing this wasnt the case, placing the water would do nothing, but placing a slab in the same water and removing it would, so not sure why placing the water doesnt trigger a tick, much in the same way that the piston method sometimes just doesnt work...




