emilyploszaj / emi

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

Add an API to allow mods to do their own EMI searching #496

Open embeddedt opened 3 months ago

embeddedt commented 3 months ago

This PR aims to add an API so that mods can run their own EMI search queries without changing the contents of the global search bar. (The motivation for this change is to add support for EMI to ModernFix's creative search tree optimization, which skips vanilla's search tree creation and just uses the installed recipe viewer to do the searching instead.)

To do this, some static fields were refactored into a "search manager" object. EMI's screen manager holds one instance of such an object, and mods may create their own via EmiApi.createSearchManager().

The code may need some quality improvement work, and an outstanding question is whether some guard needs to be added to stall searches until EmiSearch.bake() has finished running.