emilyploszaj / emi

A featureful and accessible item and recipe viewer
MIT License
220 stars 46 forks source link

Recipes with empty tags do not display correctly #501

Closed dhouck closed 3 months ago

dhouck commented 3 months ago

If there is a recipe that requires a tag, and there is no item with the tag, the recipe does not display correctly.

To Reproduce

  1. Have EMI, Nyf’s Quivers, their requirements, and nothing else. In particular, nothing should provide silver ingots. (This requires an unfixed bug in Nyf’s Quivers; I will attempt to make a PR for it later but for now it’s useful).
  2. Use EMI to look at the recipe of a silver quiver (actual: 1, 2)

Actual Behavior

The items labeled A in the above recipes, which should be anything matching "tag": "c:silver_ingots", are displayed as empty, with nothing indicating they should be elements of an empty tag. Assuming you have a silver/copper quiver and a feather, you can add this to the crafting table. However, this will not let you craft.

Expected Behavior

Either the impossible recipes are not displayed at all, or they are displayed in some way which makes it clear they are invalid, preferably with a tooltip saying c:silver_ingots somewhere to help figure out the issue.

emilyploszaj commented 3 months ago

The server is sending the client, where EMI exists, a recipe that has empty stacks, what EMI shows is is "correct". The real problem is recipes being defined incorrectly by the mods like you're noting. Unfortunately the required metadata to display an empty tag doesn't exist on the client, so EMI can't put anything there. Changing the serialization server side to send this information would be relatively invasive and prone to causing other issues with mods, so I don't think any reasonable resolution exists, sorry.

dhouck commented 3 months ago

I’m somewhat surprised by that; I thought it had enough information to know which tags were required, and given that the provided recipe does not show up when you put the items in the crafting table I was sure the client had enough data to know the recipe was invalid, even if not why.