Hello,
I attempted to build a high throughput and reasonably efficient smart foundry; I believe it is impossible due to an inconsistent behavior of (dumb) inserters feeding furnaces.
Issue: An Inserter will consider the output slot of a furnace when deciding what to load, but will not consider the input ingredients. This will cause inserters to deadlock when a furnace is partially loaded with stone or iron plate if its output slot does not contain at least one stone brick or steel plate, respectively.
For example, an inserter will not attempt to feed copper ore to a furnace with Iron plate in its output slot:
HOWEVER, an inserter WILL attempt to feed copper ore to a furnace with Iron plate in its input slot:
Expected Behavior: Inserters should either completely ignore the input AND output slots of a furnace, or it should respect both. I advocate that the inserter should respect both since loading a furnace completely blind would be inconsistent with inserter behavior in other circumstances and makes it (nearly) impossible to efficiently use furnaces for multiple purposes.
0.14.9:Inconsistent Inserter behavior w.r.t Furnace contents
Re: 0.14.9:Inconsistent Inserter behavior w.r.t Furnace contents
I'll post on the other thread, but I think there's an actual issue here. It's clear that inserters peer into the state of the furnace to decide whether or not to load a resource, but does so inconsistently. It looks at the output buffer/slot, but not the input buffer/slot.
Re: 0.14.9:Inconsistent Inserter behavior w.r.t Furnace contents
Its simpler than that, the inserter considers if the recipe of the target entity takes the available item. In case of a furnace, when there is nothing in the output and not enough in the input then there is no recipe yet, so it tries to insert anything that is smeltable.loganb wrote:I'll post on the other thread, but I think there's an actual issue here. It's clear that inserters peer into the state of the furnace to decide whether or not to load a resource, but does so inconsistently. It looks at the output buffer/slot, but not the input buffer/slot.
Re: 0.14.9:Inconsistent Inserter behavior w.r.t Furnace contents
Yes, but in that case, the recipe is already selected at the time iron plate is put in the input buffer. It can only be steel plate.
I understand from an implementation standpoint how your comment explains the behavior, but it seems like a bug to have iron plate in the input buffer, but consider the recipe unspecified.
I understand from an implementation standpoint how your comment explains the behavior, but it seems like a bug to have iron plate in the input buffer, but consider the recipe unspecified.
Re: 0.14.9:Inconsistent Inserter behavior w.r.t Furnace contents
Additionally, some mods add multiple ways to smelt a given output, which can result in the same inserter mis-match problem.
e.g. Angel's ores adds smelting crushed saphirite to make iron plates, but you can still use iron ore to make iron plates. The crushed saphirite recipe takes 2 input to make 2 output, so it can get into a state where the furnace has 1 crushed saphirite but the inserter has picked up an iron ore and cannot insert it into the furnace.
e.g. Angel's ores adds smelting crushed saphirite to make iron plates, but you can still use iron ore to make iron plates. The crushed saphirite recipe takes 2 input to make 2 output, so it can get into a state where the furnace has 1 crushed saphirite but the inserter has picked up an iron ore and cannot insert it into the furnace.