Farmer's Delight

Farmer's Delight

97M Downloads

[1.16] Compatibility issues between Farmer's Delight cooking pot and Refined Storage auto-crafting

AbacusOperator opened this issue ยท 5 comments

commented

Issue description:

Important note: I don't know which mod in this interaction is responsible for failure, so I am reporting issue identically at issue trackers of both mods involved, thus a bit of introduction is provided to both mods, thus some parts might seem as overexplanation.

Farmer's Delight's cooking pot

Farmer Delight is a cooking and farming mod. Most cooking recipes in this mod centered cooking pot. Cooking pot is placed atop of heating block, such as magma block or Farmer's delight own stove. Cooking pot's GUI consists of four major parts:

  1. 3x2 crafting grid for dish ingredients in the top-left corner.
  2. Serving container input in the bottom-right corner.
  3. 'Pre-packed' output slot in the top-right corner.
  4. Actual output extraction slot in the bottom-right corner.

Output is produced in the upper output slot (GUI3) if correct pattern if filled in the crafting grid (GUI 1), however to actually output the result as item, appropriate serving container (usually either bottle or bowl) is has to be placed into serving container input slot (GUI 2), it is consumed upon actually creating output item in the output slot (GUI 4)

Refined Storage Auto-crafting

Refined Storage provides methods for using Vanilla and other mods' machines automatically through storage system and crafter with required crafting pattern, that can be created manually or through JEI integration. The most basic setup of Refined Storage system needed for debugging issue at hand:

  1. Cable. Connects parts of system
  2. Controller. Block that unites all system together, its GUI lists all parts of storage system. For debug purposes use Creative, that doesn't require energy.
  3. Item Storage. Block that actually stores items in the system. Smallest 1k storage is enough for testing any recipes.
  4. Grid. Block used to insert and extract items from system, as well as ordering crafting of missing items if patterns for them are in the system.
  5. Pattern Grid. Block that used to create patterns for automatic crafting. In this case processing mode should be checked on. Input items placed into the 3x3 input grid on the left and output items placed into 3x3 output on the left. Empty pattern (refinedstorage:pattern) is inputted the upper right slot and written pattern is produced in the slot below it. Pattern grid can be filled out manually or with JEI support by opening JEI recipe while in Pattern Grid GUI and pressing + on the bottom right of recipe in JEI.
  6. Processing machine. In this case Farmer's delight cooking pot.
  7. Crafter. Blok that should be placed facing the processing machine. Written pattern should placed in it. Should be connected to the rest of storage system.
  8. Exporter. Export items from the system. In this case should connects crafter and processing machine in order to place input ingredients into machine. Note that it should not be connected to storage system directly or it will just turn machine into storage by try place items from system into it.
  9. Importer. Inputs items into the system. In this case should connects crafter and processing machine in order to take outputs.

The issue itself

Automated crafting of food in Farmer's Delight's Cooking Pot with Refined Storage system is impossible due to at least three distinct issues:

  • Refined Storage pattern grid (and most likely crafter and importer/exporters) doesn't recognize cooking pot's serving container slot (GUI2). Instead serving container is incorrectly recognized as part of output by JEI pattern created through JEI integration and won't go into it slot if manually made part of input side of pattern. This is resulting invalid recipes and cooking pot ultimate inability to be fully automated with Refined Storage.
  • Refined Storage pattern grid doesn't differentiate stack of N items from the same item used in N different slots of cooking pot's crafting grid. It just dumps all input items into grid, resulting in stacking of identical items. It is relevant not for all recipes, but those ones that have the same ingredient used more then once, for example, hot cocoa (farmersdelight:hot_cocoa).
  • If crafting of multiple of the same item is requested at once, refined storage will try to input totality of crafting ingredients into the cooking pot, even if it ruins recipe. For example, hot cocoa requires one bucket of milk. Milk bucket is not stackable, thus if more than one hot cocoa is requested, Refined Storage puts more than one milk bucket into cooking pot crafting grid, rendering recipe invalid.

What happens:

Cooking pot's recipe processing pattern created through Refined Storage's JEI integration or manually doesn't produce any outcomes due to Refined Storage not interpreting Farmer's Delight correctly, see details above. Items that are recongized as input are simply damped into

What you expected to happen:

Refined Storage correctly interprets and executes Farmer's Delight cooking pot recipes, enabling automated crafting when serving containers and cooking ingredients are available.

Steps to reproduce:

  1. Setup Farmer's Delight cooking station consisting of Farmer Delight's cooking pot a top of Farmer Delight's stove.
  2. Setup basic Refined Storage system consisting of (Creative) Controller, Grid, Pattern Grid and Item Storage that are adjusted to each other.
  3. Place Refined Storage's crafter facing the Farmer Delight's cooking pot.
  4. Place Refined Storage's importer and exporter facing Farmer Delight's cooking pot and connect them to the crafter with cable.
  5. With cable connect crafter to Refined Storage system that was set up in step 2. Important note: Cooking pot's importer and exporter are to be connected to the crafter, but not to the
  6. Variant A: Create Refined Storage's processing recipe pattern for Farmer Delight's cooking pot using Refined Storage support for JEI in Pattern grid. Variant B: Create Refined Storage's processing recipe pattern for Farmer Delight's cooking pot manually adding all ingredients and serving container into the input side of pattern and expected output into output side of pattern.
  7. Install one of resulting patterns into the crafter.
  8. Add all needed ingredients into the storage system through the grid.
  9. Request crafting of cooking pot's product through the grid.

List of mods & vanilla versions:

  • Minecraft: 1.16.5
  • Forge: 36.0.46
  • Refined Storage: 1.1.12
  • Farmer's Delight: 0.3.2
  • JEI: 7.6.1.71

Does this issue occur on a server? [yes/no]
No, singleplayer

commented

I kinda left this one hanging, eh? ๐Ÿ˜„

The Cooking Pot cannot be expanded to use a 3x3 in this case, as it's part of the design. A few updates ago, some updates were done to the JEI integration, but the bowl remains an issue of sorts. JEI only lets things be either "input" or "output" in logic.

This integration might be expanded in the future, with the stack size issue being addressed at some point in the future, but for now, it's working as correctly as it can. Thanks for detailing, it, though! ๐Ÿ‘

commented

Hi there, @AbacusOperator! Sorry for taking so long to reply; many things got in the way. :(

Thanks for the extensive details in regards to the issue. Integrations as intricate as these (such as Refined Storage) haven't been accounted for yet, and are being worked on a case-by-case basis. I'm testing the steps you provided gradually, and will address them separately at a time. ๐Ÿ‘

First off, the issue with patterns. From what I saw, RS treats "Processing" recipes as expected, with a set of expected inputs/outputs. This system might not work well with the Cooking Pot due to the nature of the container slot:

  • Ingredients are input from the top face;
  • Containers are input through the horizontal faces (sides);
  • Complete meals are output through either the bottom or horizontal faces.

I couldn't add a special behavior for bowl insertion, as any item can be a container for any given recipe (for example, Stuffed Pumpkin), and there is no practical way to specify that through the generalized "Processing" pattern. However, there is a way to account for it: you can add a side Exporter to keep the pot stocked with bowls, or a "container item" you expect to be used.

Here is the setup I put together. This has successfully crafted Beef Stew, so long as the system is stocked with enough Bowls. The side exporter stocks them into the Cooking Pot.

image

commented

Second, the JEI Integration pattern fill. Honestly, I'm unsure what to do about this one, as I already specify the container slot as an input to the recipe. It seems to grab all three slots from the right side as "output" for some reason. I can take a look at this later and see if anything is wrongly defined.

commented

Refined Storage pattern grid doesn't differentiate stack of N items from the same item used in N different slots of cooking pot's crafting grid. It just dumps all input items into grid, resulting in stacking of identical items. It is relevant not for all recipes, but those ones that have the same ingredient used more then once, for example, hot cocoa (farmersdelight:hot_cocoa).

This is a long-standing issue with how Farmer's Delight handles recipe reading for the Cooking Pot, as described in issue #26. Ideally, adding the same item on one stack should work, but I haven't been able to program this functionality yet, due to limitations on how recipes are read.

RS might not be applying them to separate slots due to how the blocks interface, or because it might not be a crafting recipe. I'll keep this on mind.

commented

Thank you for response!
For matter of fact, here is RefinedStorage devs comment on the issue refinedmods/refinedstorage#2906
I think the possible way to fix this issue is to expand cooking pot crafting grid to standard 3x3 for which crafter JEI pattern function is designed in mind, but I am not sure.