Makes recipe-viewer mods work again on Paper, Purpur and Folia servers.
Since Minecraft 1.21.2, servers no longer send recipe data to clients. On a plugin-based server (Paper / Purpur / Folia) this means JEI, REI and EMI show no recipes at all — the mods simply can't see what the server can craft. JEI's own recommendation is to install JEI on the server, but JEI is a mod and cannot run on a plugin server.
JEIRecipeFix fixes this from the server side. It sends your server's recipes to the recipe-viewer mods so recipe lookups work again — with no client mod to install and no mod loader on the server. Players just connect with JEI (or REI / EMI) and it works.
Features
- Restores recipe lookups in JEI, REI and EMI.
- Zero setup - install the plugin and players just connect; recipes are sent automatically on join.
- Works with Fabric and NeoForge clients.
- Covers vanilla, datapack and other plugins' recipes, and refreshes automatically after a datapack reload.
- A single jar for the whole 1.21.2 → 26.2 range.
- Lightweight and dependency-free; stays silent for vanilla clients.
How it works
The plugin reads the recipes your server already knows and delivers them to the client the same way a mod loader normally would. It does not change crafting, add content, or affect gameplay — it only restores the recipe information that recipe-viewer mods need in order to display it.
Requirements
- A Paper, Purpur or Folia server on Minecraft 1.21.2–26.1.2.
- Each player uses a Fabric or NeoForge client with JEI, REI or EMI installed (as they already would).
Commands
| Command | Description |
|---|---|
/jrf info |
Show status: recipe count, online players, sync state. |
/jrf resync [player|all] |
Re-send recipes (useful after datapack changes). |
/jrf reload |
Reload the configuration. |
/jeirecipefix is the full command; /jrf is the alias. All commands require the jeirecipefix.admin permission (operators by default).
Configuration
config.yml offers a few simple toggles:
enabled: true
sync-on-join: true
sync-on-datapack-reload: true
debug: false
Note
This is an unofficial, third-party plugin. It is not affiliated with, or made by, the authors of JEI, REI or EMI.
All Versions
+ Add Version- Players on a different Minecraft version than the server were kicked the moment they joined, on
which shift with every release, and ViaVersion cannot translate the channel they travel on. The
plugin now checks each player's real version and holds the recipes back from anyone not on the
server's.
### Added
cross-version-sync(safe/off/force) sets what those players get.safestill sends the
cross-version-unknown-is-native, for servers whose ViaVersion runs on the proxy./jrf inforeports the server protocol, whether ViaVersion was found, and how many players are on
### Changed
- Recipe-book packets are batched at 128 KiB instead of 512 KiB. ViaBackwards rewrites them on the
recipe-book-sync: allno longer re-sends the recipe book on respawn to clients that never got it,
- REI support.** REI does not read the recipe sync JEI uses, it builds its list from the server's
REI showed nothing. The plugin now sends the full recipe book to clients that report REI, and REI
shows the server's recipes, datapack and plugin ones included.
recipe-book-syncinconfig.yml(auto/all/off) decides who receives it.autolimits
- New settings and messages are written into your existing
config.ymlandmessages.ymlon
### Fixed
- The confirmation in chat now reaches REI players too, not only JEI ones.
- The re-read trigger and the recipe book are sent even when the client reports its recipe viewer a
so whether a player was served came down to the order of a set on their client.
- Recipes are re-sent after respawn, where the server replaces the recipe book wholesale.
- JEI showed *"This server does not provide recipes to JEI"* and kept using your client's own
the server's own recipe packet arrives, which is before any plugin can send anything, so the
recipes this plugin sent a moment later were ignored for the rest of the session. The plugin now
asks the client to re-read its recipes right after sending them, so JEI reloads with the server's
recipes. JEI still prints its warning once at join; a silent JEI reload right after it means the
recipes arrived.
/jrf resyncnow reaches a running JEI on Fabric clients instead of quietly doing nothing.- Recipes whose serializer is not a vanilla one are left out of the Fabric payload instead of making
- An empty recipe set is no longer sent; it made recipe viewers report unusable recipes.
- A recipe set too large for a single custom payload (over 1 MiB encoded) is no longer sent at all.
- A message missing from an older
messages.ymlwas sent to players as its own key
jei-warning-notice) instead of the actual text./jrf inforeportedactiveeven withenabled: false, which read as if everything was fine.
### Changed
- Recipes are now sent once the client has announced its plugin channels, so the plugin only sends
- A single send failure no longer silences every later error for the lifetime of the server.
- The normal log now records the recipe count, payload size and whether the re-read trigger was sent.
/jrf inforeports the trigger state and the number of send failures.- Removed 1.21.2 from the published version list: Paper never released a 1.21.2 build.
### Added
recipe-update-triggeroption inconfig.ymlto turn the re-read trigger off.- A one-line chat notice telling the player JEI's warning is out of date, sent only to clients that
messages.yml(
jei-warning-notice), switch in config.yml (explain-jei-warning).config.ymlandmessages.ymlare brought up to date on startup: settings and messages added in
already set is left exactly as it was. The server log lists what was added.
- Support for Minecraft 26.2.
- Your server's recipes now show up again in JEI, REI and EMI on Paper, Purpur and Folia.
- Works automatically for Fabric and NeoForge clients, no client mod needed.
- Recipes update after a datapack reload.
- Admin commands to re-send recipes, reload settings, and check status.