CyclopsMC / IntegratedCrafting

Craft stuff in Integrated Dynamics networks
MIT License
7 stars 6 forks source link

Crafting recipes on machines not being marked as completed when results are fed into another recipe #48

Closed cleavera closed 3 years ago

cleavera commented 3 years ago

Issue type:


Short description:

Crafting recipes which are immediately fed into another crafting recipe are not always marked as completed.

Steps to reproduce the problem:

Setup This example uses the recipes: Cobblestone -> Gravel -> Sand. But any recipe feeding into another one works

  1. Set up two recipes one for Cobblestone -> Gravel and one for Gravel -> Sand.
  2. Place down two pulverisers, attach crafting interfaces to both of them and place your crafting recipes in them.
  3. Place two crafting writers and give one a variable card for the gravel item and the other sand. Configure them to ignore inventory.
  4. Attach a crafting job terminal to the network to view the progress of the crafting, place a storage container on an item interface to give the system some capacity
  5. Feed system with a bunch of cobble
  6. After about 10-15 iterations the gravel recipe will get stuck on crafting and never complete

Expected behaviour:

Marking the recipe as complete should happen before the ingredients are exported to the next crafting process.


Versions:

Log file:

N/A


Alternative reconstruction setup using logs 9 -> charcoal 9 -> charcoal block Setup The easiest way to get this to consistently break is to have your logs -> charcoal recipe as Logs * 9 -> Charcoal * 9

rubensworks commented 3 years ago

Thanks for reporting!

Log | Bot Usage
rubensworks commented 3 years ago

I have not been able to reproduce this problem myself unfortunately.

Would it be possible to share the world of a reproducible setup? (preferably without any other mods, so I can load it into my dev environment for easier debugging)

cleavera commented 3 years ago

@rubensworks

Apologies for the slow response, I must have missed the notification in the glut of Christmas emails. I wasn't able to recreate with a completely blank world, I ended up adding the furnace overhaul mod. It's unclear whether I could have recreated it with a vanilla furnace given enough time but with the zenith furnace it breaks fairly quickly.

https://anthonycleavercom.blob.core.windows.net/bush/debug.zip

I added a separate system to dispose of the glass panes once they're crafted as the chest kept clogging up with items. I'm not sure if the issue might be affected by lag as I was able to reproduce it a lot easier in my modpack testing world which has a bit of a lag issue.

7eggert commented 3 years ago

UNTESTED

I noticed that IC does expect the results to show up in the storage. Thus your recipe needs to not mention the intermediate result but the final result. E.g. you pulverize iron ore and then melt it; your recipe needs to say "Iron ore turns into two iron ingot".

rubensworks commented 3 years ago

I postponed this issue a bit due to its complexity... But after many hours of debugging, I finally found the cause of it and fixed it! It was due to a nasty race condition (feel free to read the commit messages if you want to know more).

I won't make new MC 1.12 releases, so I intend to port this change to 1.16 and release the fix there.

@cleavera Before I release these fixes, would you be willing to confirm this change also fixes everything on your end (in 1.12)? Since it's possible that you're not tracking this issue anymore, I will consider this issue fixed if I don't get a reply by Monday.

Dev builds can be found here:

Dropbox
IntegratedCrafting-1.12.2-1.0.10-DEV.jar
Shared with Dropbox
Dropbox
IntegratedDynamics-1.12.2-1.1.11-DEV.jar
Shared with Dropbox

Also, I disabled the glass pane trash for testing, as it caused some conflicts due to different ID networks not communicating with each other, so it's better if you'd do this as well.