
Crafting pipes search input slots of Logistics Crafting Tables and fuel/input slots of furnace for outputs
DashFury opened this issue ยท 9 comments
I tried to set up some pipes around a furnace to automatically transform logs into charcoal. A crafting pipe and a satellite pipe would send 8 log and 1 charcoal in the right slots of the furnace, expecting 8 charcoal to come out.
No matter on what side I put the crafting pipe, it will always remove the charcoal put in the fuel slot and send it as part of the result, preventing the furnace to fulfil the request. While this "sneaky" ability can of course be useful, maybe it shouldn't be built-in, with no way to be disabled. Especially since you can add sneaky upgrades to it anyway.
If the sneaky ability can't be modified, the crafting pipe should at least not consider anything but the actual output slot of furnaces as a valid output slot.
As a workaround: if you have any mod that lets you make smaller charcoals (Progressive Autmation and zTones can do that), then split the fuel up before pushing into the furnace.
Well, I ended up using suppliers and providers. The advantage of furnaces is that they are already auto-crafting things, so the crafting pipes aren't irreplaceable.
I could also extract the output with a hopper, so the crafting pipe never touch the furnace. It's less compact but it does exactly what is asked from it.
I conducted some more test, and I don't think the problem comes from the sneakiness anymore, since even the Logistics Crafting Table would be affected if asked to craft items that are also part of the recipe. Which is weird since its output is never placed in the inventory slots of the table, meaning those slots are for input only. Anything not in the output slot should only be accessible by the Crafting Cleanup upgrade.
So it's more of a matter of not taking back the input as part of the output, I'm renaming the issue accordingly. But situations like this are pretty rare, so this is a really minor issue. It might not even be worth the hassle of modifying the pipes for this.
@DashFury the tricky part is how do you determine what is the input and what is the output. LP crafting is quite intelligent, if I remember correclty, it can distinguishe items if only one NBT tag differs, but that's all we can expect. I think without a deep integration with the recipes of certain mods there is no way to determine which slot is input and which is an output on a TE.
In your specific case it could be solve a problem if you use e.g. coal for burn charcoal, or Alumentum from Thaumcraft, or any other things than charcoal. An another way is using a Coke Oven from any mod that contains this machine, it burns wood completely free (including burnable item).
I don't think LP should determine what is output or not in an inventory like a chest, of course. It can't keep track of everything, and trying to would probably be a very bad idea.
The thing is, Logistics Crafting Tables don't have output slots. They craft items and give them to the crafting pipes directly, so it's pretty easy to know what is input or not: Everything is. Furnaces are vanilla, and their slots are strongly defined, so that's easy too.
For the rest, you can't expect a mod to take care of every other mod out there. That's why I only mentioned Vanilla and LP blocks.
Thank you for your proposed solutions, but while they do work, I have the same logic here: You can't expect other mods to fix problems in one. And changing the recipe isn't a solution, the point being producing charcoal without reliance on coal or other limited resources.
The cleanest solution I found, using only LP and Vanilla blocks, and keeping the same recipe, is just to extract the produced charcoal with a hopper. The crafting pipe is connected to the hopper, and satellite pipes send the input in the furnace above. So furnaces aren't a problem anymore.
It's still doesn't explain why Crafting Pipes search for output in the Logistics Crafting Table inventory.
I am not a hardcore mod developer, but as I know you can only discover if there is available slots in a TileEntity. If you handle all TEs in generic way, there is no difference between slots, so you cannot expect any empty slot will be an output slot or whatever. Handling vanilla items in special way introduces a difficulty into this system. As I understand, LP tries to handle all TE (regardless it's vanilla or not) similar way, pushes input stacks anywhere the TE can accept it, and pulls anything that matches the defined output, regardless which slot is contains it. In this algorythm, there is no "input" slot or "output" slot, just searching for output stacks, nothing more, nothing less. This is why you can push items to a EnderIO Capacitor bank to charge, it will charge them (in-place), and you can pull out the charged tool just because it changed its metadata value (and also some NBT too) that matches to the output stack. And this is why you can use a chest to craft things if there is some complex system behind the "recipe" that produces the expected output (remember: chest is a vanilla block). I don't think this system should need any improvement. Yes, it can cause issues in a very specific corner cases (like yours), but I don't think LP crafting should cover every single case that is possible in the game.
I understand your frustration about your issues with your vanilla-based system (which is an excellent idea anyway!), but I disagree if there is any need for improvement.
Oh there's not much frustrations, I just dealt with this differently :) I was just really surprised to see the crafting pipe put stuff into an inventory to instantly remove it, with no way to be configured to not do so.
It's definitely a really minor and specific issue, and I think I'll just close it, as I don't think it's worth the hassle to add exceptions for some blocks too, and then test if everything still works. I still think it's weird that it can happen with Logistics Crafting Tables, since they are part of the mod, but again, not much of a crippling problem.
Thanks for your assistance!
I just tested Railcraft's Coke Oven with Logistics Pipes. The Logistics pipes can supply its input slot, but can't take from it. Of course, it's because Railcraft decided to deal with this by itself, but I was surprised when seeing this.
I see less and less reasons for LP to not do the same for its own blocks, as well as vanilla blocks (since nobody will). I'm not reopening this, as it's really really minor, but I'm pretty amused x)
Again: because it would need real integration with these machines. LP currently do not know you use a furnace, a chest, an Energized Smelter or a Blast Furnace for your crafting, it just push the item to the slot where the machine allows it, and takes the result from any slot where it finds. If the machine do not want to make fuel slot pullable, the machine should handle it, since not only LP handles slots in these way, but e.g. Golems too. Protecting slots is a machine task, not a pipe one.
Yes, I know. I completely agree. That's why I'm surprised Logistics Crafting Tables don't do that. They are machines, they can therefore handle this machine task.
The furnace is an exception, I agree. It would require change to the pipes themselves, and it's not something important enough to justify such a modification. But the Logistics Crafting Table? It's a machine.