CyclopsMC / IntegratedCrafting

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

Autocrafter only does 1 step at a time #6

Closed Degani007 closed 1 year ago

Degani007 commented 5 years ago

Issue type:


Short description:

Making ingots using the ore doubling way of ender io (Sag Mill -> Alloy Smelter), the system only uses 1 machine at a time and only adds 1 item at a time instead of the required stack. First it will grind every ore and once that is done it will start putting the dust into the alloy furnace even though those things should happen at the same time.

Steps to reproduce the problem:

  1. Start auto-crafter
  2. System throws 1 ore in the Sag Mill at a time instead of a stack
  3. System throws 1 dust in instead of a stack
  4. Get Ingots but at an inefficient and slow pace.

Expected behaviour:

What should be happening is that the moment the sag mill is working the dusts should be instantly put into the alloy smelter by the system. Instead it waits for the stack of iron ore to be fully pulverized, one by one, before moving on to the Alloy Smelter and once again put items in one by one.


Versions:

Versions:

IntegratedCrafting-1.12.2-1.0.0 Minecraft 1.12 Forge1.12.2-14.23.5.2796

rubensworks commented 5 years ago

So this is not really a bug, but more a consequence of how jobs are being scheduled.

That being said, I should come up with a way of improving this...

Note to self: The problem is that multi-amount jobs has to finish a single job completely before another one can start. One solution would be to pop off one job at a time, so that the next one could potentially start already. We have to make sure that the dependency graph is still isomorphic though.

Degani007 commented 5 years ago

Few more observations when using the autocrafter with Mekanism ore doubling.

Same applies for Ender IO machines, they can grind up to 3 ore put only 1 is inserted at a time losing all the efficiency bonuses that these machines give.

rubensworks commented 5 years ago

The crafter will only input 1 item at a time. So the elite mekanism machines become useless as only 1 slot is used not all 7.

If you want this, you should make a recipe variable card with 7 inputs, and 7 outputs.

If you have the machines connected it will drop in 1 iron ore and waits till the ingot comes out at the end of the line before inserting another 1 iron ore. Making the whole thing even slower.

Yes, that is how it works indeed. I could add a non-blocking mode or something, but it would be better to open a separate issue for that.

If you split the system, autocrafter on the enrichtment chamber and 1 on the smelter, it will first grind ore and then when that is done will do the dust into ingots.

Not sure what you mean by this. Is this a different problem?

antrobot1234 commented 5 years ago

perhaps a way to do this is to have a "simulated distribution" integer number as an option for the crafting interface. it basically would act as how many of the machine the network thinks there is. so, if you set it to 5, it will do 5 at a time instead of one because it's doing 1 each 5 times on one machine simulated to seem like 5 to the network.

Adirelle commented 5 years ago

If you want this, you should make a recipe variable card with 7 inputs, and 7 outputs.

I actually tried this with a fully-upgraded factory and a recipe that process items 8 by 8. The factory still processes the items faster than the crafter injects them. So if wanted to craft 64 steel ingots, doing it manually would still be faster than letting IC doing it.

As a workaround, I tried putting several crafters with copies of the same recipe on a Block Extender from Refined Relocation 2, and it does combine the craft. This works but requires another addon.

Corfiot commented 2 years ago

This is really important mid-game cause it makes crafting really slow. You should have all steps in a job run simultaneously and poll them all instead of stepping through them one by one. I could for example manually add stuff at intermediate step 2 of a 4 step craft and that should right away fire the whole batch to the crafting interface.

Otherwise, all the work of inputting recipes into the system has to be redone in another mod

Thanks for the great mod.

Norcim133 commented 1 year ago

The functionality I'd want is to check the max amount of items the target machine can accept and to automatically push the lesser of that number vs. the number required by the crafting job.

For example, the ultimate smelting factory can accept 9 stacks at once. Yes, I can program an ID recipe to do 576 iron ore in order to get 576 iron ingots in one run of the factory. But what if I only want 1 iron ingot? Or 32? What if I only have 5 ore? I don't want to have different recipes for each batch size across all ingredients. And I don't want to get blocked because I don't have enough ore for a single, large batch size recipe.

rubensworks commented 1 year ago

This will be included in the next update.