Hello,
I have an issue when switching barrel filling/emptying recipes in an assembler using circuit network. If a recipe is switched from barrel emptying to barrel filling (and fluid has been previously in the assembler), the empty barrels are not inserted into the assembler by the associated inserter.
I encountered this issue while working on an "programmable" factory which would switch different fluids using barrels. Basically, I want to set assembler to fill barrels so that previous liquid could be taken out of the pipeline before I switch the assembler to emptying barrels with a new liquid that is going to be used.
I have attached the log and a small save, which demonstrates the issue. There is a clock switching between different barrel recipes and as you can observe, once we switch to barrel filling recipe, the empty barrels are not inserted from the chest. The issue does seem to happen even if just one liquid is used, but I would appreciate if it worked with multiple different liquids.
P.S. I had a lot of fun with the game, I wish you add some more control circuit stuff to 2.1, so we could control the factories even better.
[boskid][2.0.72] Barrels not inserted into assembler after empty barrel recipe is set via circuit
[boskid][2.0.72] Barrels not inserted into assembler after empty barrel recipe is set via circuit
- Attachments
-
- Bug-empty-fill-barrel-recipe-switch.zip
- (3.82 MiB) Downloaded 7 times
-
- factorio-current.log
- (13.49 KiB) Downloaded 4 times
Re: [boskid][2.0.72] Barrels not inserted into assembler after empty barrel recipe is set via circuit
Thanks for the report. Issue is now fixed for the next release.
This is quite serious problem because it may cause a desync in MP. Core of the problem is that assembler reports as being full when it has a fluid product overload but fluid product overload is checked in a way that introduces a 1 tick delay: when changing recipe while an assembler had a fluid product overload to a different one, fluid gets cleared but inserter still considers that machine as being full and rejects inserting items. Problem is that a tick later that machine should no longer be considered full and should wake up the inserter however it fails to do both of those which leads to problems.
This is quite serious problem because it may cause a desync in MP. Core of the problem is that assembler reports as being full when it has a fluid product overload but fluid product overload is checked in a way that introduces a 1 tick delay: when changing recipe while an assembler had a fluid product overload to a different one, fluid gets cleared but inserter still considers that machine as being full and rejects inserting items. Problem is that a tick later that machine should no longer be considered full and should wake up the inserter however it fails to do both of those which leads to problems.

