promotional bannermobile promotional banner

JEI/EMI Optimizations

Join your modpack's worlds way faster, JEI and EMI loads its slow plugins and search index after you join with the exact same recipes.

โšก JEI/EMI Optimizations

Forge Fabric NeoForge Requires Fabric API on Fabric

![Works with JEI + EMI](https://img.shields.io/badge/works with-JEI + EMI-3fb950?style=for-the-badge) ![Client only](https://img.shields.io/badge/side-client only-4c8bf5?style=for-the-badge) ![Minecraft 1.16.5 to 26.3](https://img.shields.io/badge/minecraft-1.16.5 to 26.3-e04e14?style=for-the-badge)

Join Wayfire Studios on Discord

Join your modpack's worlds way faster. JEI works right away, its slow plugins finish loading in the background, and you end up with the exact same recipes. Works with EMI too, next to JEI or on its own.


๐Ÿš€ What it does

โœ… You get into the world way sooner, JEI's slow plugins add their recipes after you join instead of freezing the game.

โœ… JEI works right away, its search index builds in the background.

โœ… Looking up recipes (R and U) doesnt hang the game anymore in big packs (1.20.1 and 1.21.1).

โœ… Once its done loading you have the exact same recipes as without the mod (checked on five packs).

โœ… Works with EMI too, next to JEI or on its own.

โœ… Client side only and nothing to set up.

๐Ÿ—ก๏ธ Roguelike Dungeons 3 ๐ŸŒ‘ Soulrend ๐Ÿ”ซ BattleArmory TACZ + EMI
41.8 s โ†’ 12.9 s 104 s โ†’ 8 s 24.4 s โ†’ 3.1 s
main menu to playing freeze after joining joining to EMI working

โš™๏ธ How it works

JEI/EMI Optimizations splits up JEI's world join startup (JeiStarter.start), which normally runs every plugin and builds the whole search index before you can even play:

  • Every plugin's registerRecipes step that isn't known to be quick runs after the join on a worker thread, against a snapshot of JEI's ingredient lists. Its recipes get laid out on a thread pool and added to JEI a bit every frame.
  • The search index (ElementSearch) gets built after the join too, until its done the item list just searches whatever has been gathered so far.
  • If a plugin errors in the background it just runs the normal way right there. Every plugin's result also gets fingerprinted and compared with its earlier launches, differences end up in the log.
  • JEI's crafting and brewing extension caches get made thread safe, cause laying recipes out on several threads at once would lose some of them otherwise.
  • Recipe lookups get faster cause the ingredient ids of big recipe slots, JEI's category order checks and the firework dye list get kept once they're worked out, instead of being recalculated on every single lookup.

๐Ÿงฉ With EMI

EMI and JEI together: EMI reads JEI's recipes through its JEI bridge (JEMI), so EMI gets reloaded once (EmiReloadManager.reload) when the last background recipes are in. That reload keeps the creative tabs EMI just built instead of building them again. EMI works way sooner too, cause JEI doesnt freeze the game and hold EMI back anymore.

EMI on its own (1.20.1 and 1.21.1, also with Too Many Recipe Viewers): theres not that much to win here, EMI already loads in the background by itself. The creative menu keeps the creative tabs EMI already built, instead of the game building them all again the first time you open it.

EMI ends up with the exact same recipes either way, checked one by one against no mod.


๐Ÿ“Š Benchmarks

Main menu to playing

Pack Without the mod With JEI/EMI Optimizations
Roguelike Dungeons 3 (measured by Dreams01) 41.8 s 12.9 s
Soulrend (Forge 1.20.1, 418 mods) 3 min 56 s 2 min 16 s
All the Mods 10: To the Sky (NeoForge 1.21.1, 324 mods) 1 min 27 s 57 s
Westercraft (Fabric 1.20.1, 179 mods) 25 s 10 s

With EMI

Pack Without the mod With JEI/EMI Optimizations EMI's recipes
BattleArmory TACZ (Forge 1.20.1, EMI + JEI), joining to EMI working 24.4 s 3.1 s 8,233, the same
Create+ (NeoForge 1.21.1, EMI on its own), first creative menu open 0.27 s 0.12 s 25,672, the same
MCF (Fabric 1.20.1, EMI on its own), first creative menu open 0.11 s 0.11 s 16,014, the same

In BattleArmory TACZ EMI has all 8,233 recipes 31.6 s after joining. In MCF ModernFix already keeps the creative tabs, so theres nothing left to win there.

Every JEI optimizer on one pack

Changed+ (Forge 1.20.1, 205 mods, JEI 15.74), each one on its own, two runs each, the middle value.

Joining to JEI working JEI fully loaded Longest freeze Recipes Lookups the same as plain JEI
Plain JEI 20.6 s 24.9 s 24.9 s 59,377 -
โšก JEI/EMI Optimizations 2.6 s 38.1 s 4.5 s 59,377 400 of 400
JEI Rewired 15.3 s 15.3 s 9.9 s 59,377 400 of 400
JEAsync 8.1 s 8.1 s 4.1 s 59,094 393 of 400
Just Enough Freezes 6.8 s 8.0 s 8.0 s 33,991 340 of 400
Just Enough Loading 10.7 s 11.6 s 11.6 s 34,347 340 of 400
Just Enough Threads 26.1 s 26.1 s 4.1 s 31,834 340 of 400
TheFastLaunch 21.5 s 22.9 s 22.9 s 59,377 400 of 400
JEIOptimizer never finished loading (both runs stopped after 25 min)

JEI is usable way sooner with this mod than with any of them, and its the only fast one that keeps every recipe. The others that lose recipes drop JEI's anvil and grindstone example pages (23,558 anvil ones in plain JEI). The catch: the last background recipes come in later than plain JEI would finish (38.1 s), cause they get added a little bit each frame so the game doesnt hitch. "Lookups" is 400 random items, R and U on each, compared with plain JEI.

Next to the other JEI optimizers, all at once

Joining to JEI working, and how many recipes JEI ends up with.

Soulrend All the Mods 10: To the Sky
Plain JEI 93 s, 89,590 recipes 47 s, 248,369 recipes
Just Enough Threads 44 s, 53,493 recipes 81 s, 142,066 recipes
All of them together* 44 s, 52,863 recipes 78 s, 127,818 recipes
โšก JEI/EMI Optimizations 5 s, 89,590 recipes 17 s, 248,370 recipes

*Just Enough Threads, JEIOptimizer and TheFastLaunch, plus Just Enough Freezes on Soulrend and Just Enough Loading on All the Mods 10. They cut 40-50% of the recipes by default (anvil, grindstone and fuel pages), JEI/EMI Optimizations keeps every one.

Slowest recipe lookup

Pressing R or U on a item in JEI: 8.2 s โ†’ 0.19 s in Soulrend, 2.7 s โ†’ 0.13 s in All the Mods 10.


๐ŸŽฎ Versions

Minecraft Forge Fabric NeoForge EMI without JEI
1.16.5 โœ…
1.18.2 โœ… โœ…
1.19.2 โœ… โœ…
1.20.1 โœ… โœ… โœ… Forge, Fabric
1.21.1 โœ… โœ… โœ… โœ… Fabric, NeoForge
1.21.10 โœ… โœ…
1.21.11 โœ… โœ…
26.1.2 โœ… โœ…
26.2 โœ… โœ…
26.3 โœ… โœ…

๐Ÿ’ก Good to know

๐Ÿ”Ž It finds slow JEI plugins by itself, so no list of mods to keep up to date.

โณ For a minute or two after you join, looking something up might not show every recipe yet and search results fill in while the search index builds. With EMI and JEI together EMI reloads once when they're all in (1.0.2 and up, 1.0.0 had a bug where EMI never got them).

๐Ÿ–ฅ๏ธ Client side only. It does nothing on a server so its fine to have in a server pack.

๐ŸŒ Works in multiplayer too, even leaving and rejoining a server while its still loading (tested with Westercraft's 179 mods on a dedicated server). On that Fabric server plain JEI actually missed most fuel recipes and all tag recipes, cause it starts before the server sends its tags. With this mod they were there like in singleplayer.

๐Ÿค You dont need any other JEI optimizer, but if your pack already has JEIOptimizer, Just Enough Freezes, Just Enough Loading or TheFastLaunch it works alongside them. It steps aside for Just Enough Threads since that one does the same job.

๐Ÿ“Œ On 1.20.1 it needs JEI 15.56 or newer, on 1.18.2 JEI 10.6 or newer. With an older JEI it just stays off and JEI loads like it would without it.

๐Ÿ“Œ On 1.16.5 its only the recipes that load in the background (without the thread pool), the search index still loads when you join like normal. On 1.21.10 the search index still builds when you join too.


๐Ÿงช Quick test for your pack

Join a world without the mod, then with it and compare Starting JEI took in logs/latest.log. Launch each way twice and compare the second launches, the first launch after changing mods is always slower for everything.

๐Ÿ“ฆ Pack makers: if you wanna check every plugin against JEI's normal loading before a release, put an empty file called deep-check in config/jeioptimizations/, join a world once and ship the config/jeioptimizations/plugins.json it writes with your pack.


Not affiliated with JEI, EMI or their authors (mezz and emilyploszaj). Please report problems here and not on their issue trackers.

JEI/EMI Optimizations Team

profile avatar
  • 7
    Followers
  • 5
    Projects
  • 72.7K
    Downloads

A follow goes a long way, please hit the follow button! I take commissions, and i accept partnerships, DM me on discord! feelix_dc. Been modding using my own IDE called Linen since April 2026.

More from IamFeelixView all