TooManyRecipeViewers
TooManyRecipeViewers (TMRV) is a specialized compatibility layer developed by Nolij that allows using JEI plugins with the EMI mod without requiring the installation of JEI itself.
This mod requires EMI to be installed beforehand.
Advantages of TMRV over EMI+JEI Combination (JEMI)
JEMI represents a built-in compatibility mechanism in EMI that provides basic functionality for JEI plugins by relying on JEI's internal components. This approach is maximally simplified and involves initial processing of recipe data through JEI before importing it to EMI.
TMRV uses a fundamentally different approach - it completely replaces the JEI API (while containing some unmodified JEI components). Instead of loading the complete JEI registry and subsequently querying it, TMRV directly converts JEI API calls to corresponding EMI API calls. This provides several key advantages, including more efficient use of system resources, though it requires significantly more effort to maintain compared to JEMI.
Main advantages of TMRV:
1. Plugin Compatibility
TMRV provides more complete coverage of the JEI API compared to JEMI (with one exception):
- Support for all built-in JEI recipe types (JEMI only supports crafting and informational recipes)
- Functionality with ingredient and search aliases
2. Efficiency
With TMRV, world loading is always faster than with JEMI. This is because JEI plugin initialization blocks world loading, while EMI loads plugins asynchronously after the world has loaded.
Even if TMRV loaded plugins slower (which is not the case - it loads them noticeably faster), worlds would still load faster thanks to asynchronous plugin loading.
Comparative Tests
Loading Times
| Modpack | TMRV | JEMI | Difference |
|---|---|---|---|
| Craftoria | 3201ms | 8277ms | -5076ms |
| ATM10 | 7484ms | 18658ms | -11174ms |
| ATM9 | 32392ms | 49409ms | -17017ms |
Memory Usage
| Modpack | TMRV | JEMI | Difference |
|---|---|---|---|
| Craftoria | 2.722 GB | 2.872 GB | -153.6 MB |
| ATM10 | 3.580 GB | 4.491 GB | -932.9 MB |
| ATM9 | 4.345 GB | 5.939 GB | -1.594 GB |
Known API Limitations
JEI Configuration Files
TMRV only reads the .minecraft/config/jei/blacklist.json file. This file should work correctly with vanilla ingredient types and types added by JEI plugins. It's recommended to use EMI's own ingredient hiding settings.
Recipe Manager Plugins
TMRV attempts to extract recipes from these plugins, but support is limited. Full implementation is not planned due to the outdated nature of this functionality.
Vanilla Recipe Category Extensions
Extensions for vanilla crafting and smithing categories are currently not supported.
Runtime Registry Changes
The JEI API supports modification of recipe and ingredient registries during gameplay. This concept is incompatible with EMI and will not be supported in TMRV.
JEI Code Usage
Some internal JEI components have been replaced or removed in TMRV, enabling significant improvements compared to JEMI. The use of JEI code complies with its license, which explicitly permits such usage.