Refined Storage

Refined Storage

77M Downloads

Compacting drawers break autocrafting

MegaIng opened this issue ยท 4 comments

commented

Describe your enhancement

This is not a bug report since this is just a fundamental feature that needs to be added instead of a system being broken: There needs to be a way to tell RS about the fact that various item stacks are tightly linked to each other, otherwise autocrafting is impossible to use correctly.

Assuming something simple like a recipe to create 20xclay balls from mystical agriculture essences and a recipe that uses clay blocks. If I want autocraft that recipe in large amounts, I need to tell RS somehow that clay balls lead to clay blocks.

  • I thought I can add a recipe that the essences lead to 5x clay blocks. The Crafter recipes themself don't accept that. Ok, that can be solved using external crafters like the once from RFTools (a lot slower, but barely acceptable). But then additionally this also doesn't work: When the system imports clay balls, it doesn't realize that compacting drawers turns those into clay blocks and it never makes progress.
  • The alternative is adding recipes explicitly that turn clay balls into clay blocks. With this autocrafting from scratch at least works, but now the autocrafting doesn't work if there are leftovers: It sees 8 clay balls and 2 clay blocks and thinks it can make 4 clay blocks.

Both of these solutions also have the drawback that they have to be repeated for each possible item, possibly twice if they have both a 1x and 2x compressed form.

I can see a few potential solutions:

  • Special case compacting drawers. Detect the somehow from a drawer controller and deal with that. This doesn't seem like a good solution.
  • Autodetect changes to the network caused by imports, so that importing clay balls leading the clay blocks going up makes progress for the autocrafting. I think this would work, I am just unsure if that can be reasonably implemented
  • Add a new block that allows to define a system wide equivalence between items.
  • Add a new type of interface or an upgrade/option to an external storage interface that says that all things from this interface are the same for the system. This would require adding each compacting drawer individually, but for the power and easy they provide, I think that would be fair (if it's not a big performance hit).

I am playing on 1.16.5/1.9.18, but I haven't seen anything that a solution for this was added in a new version.

commented

Don't use compacting drawers with auto crafting.

commented

Ok, in that case refined storage is unusable for me. I would be happy to brainstorm stuff (or even implement something), but just generally ignoring a major flaw in a system doesn't seem very productive.

Is there a reason why this can't be supported? Is it just hard to implement or do you have some fundamental idea about the mod that makes it not work?

commented

I think it's relatively hard to implement for a pretty niche use case. Moreover, I don't see any way how this can be implemented without having a confusing player experience.

commented

The user experience currently is very confusing already, so I wouldn't consider that a valid argument. The way to make it not confusing would be to disallow compacting drawers from being accessed. It took me almost an hour to understand why neither of the methods I mentioned above work.

It being hard to implement, yeah, I thought so, but I honestly don't think external storage connected to drawers is a niche usecase... That seems like the best way in quite a few modpacks to get the most efficient storage (by any metric I can think of, except maybe lag, I haven't measured that). But maybe I am overestimating how many people use that.

One fix that I would think is easy is to consider any items that appear in the network as fulfilling the requirements for autocrafting, even if it isn't an import of the exact item wanted, but a player insertion or compacting drawers "magic". I don't see how this would break stuff?