Recipe Item Sync
Make server-side datapack items and supported custom recipes visible in JEI, REI, and EMI.
Clients only need Recipe Item Sync and a supported recipe viewer. A resource pack is still required client-side for custom textures, models, fonts, or translations.
What does the mod do?
Many datapacks create custom items from normal Minecraft ItemStacks using data components, CustomModelData, custom names, lore, loot tables, commands, or custom crafting systems. The item exists and works in-game, but recipe viewers do not necessarily know that it exists.
Recipe Item Sync collects supported virtual content on the server and sends a compact snapshot to connected clients. The installed recipe viewer can then expose those items before the player has crafted or received them.
What v3 can synchronize
- ItemStack outputs accepted by Minecraft's RecipeManager.
- Custom names, lore, CustomModelData, data components, custom data, and stack counts.
- Fallback crafting displays for supported datapack crafting JSON.
- Deterministic virtual item definitions from supported item loot tables.
- Supported static item-entity crafting systems with deterministic outputs.
Compatibility
| Minecraft | NeoForge | JEI | REI | EMI |
|---|---|---|---|---|
| 1.21.1 | 21.1.238+ | โ | โ | โ |
| 26.2 | 26.2.0.88+ | โ | โ | Not available yet |
The emi preference remains recognized for configuration compatibility, but cannot be used on 26.2 until a compatible EMI release exists.
How synchronization works
- CollectThe server scans supported recipe and datapack sources.
- BuildVirtual ItemStacks and recipe metadata are normalized into a snapshot.
- SyncThe snapshot is sent to Recipe Item Sync clients.
- DisplayThe client exposes supported content through the installed recipe viewer.
Virtual IDs
Automatically discovered entries receive stable ris: virtual IDs derived from their source.
Manually configured items keep the ID written in the configuration.
Installation
Recipe Item Sync must be present on both the server and the clients that use a recipe viewer.
1. Server
Install the Recipe Item Sync JAR matching your Minecraft version in the server's mods folder.
| Minecraft | Recipe Item Sync build | NeoForge |
|---|---|---|
| 1.21.1 | recipeitemsync-3.0.jar | 21.1.238+ |
| 26.2 | recipeitemsync-26.2-3.0.jar | 26.2.0.88+ |
2. Client
Install the matching Recipe Item Sync build and at least one supported recipe viewer. The client does not need a copy of the datapack itself.
3. Datapack
Keep the datapack installed on the server as normal. Recipe Item Sync discovers supported content from the server and synchronizes the relevant ItemStacks and metadata.
4. Resource pack
If the datapack uses custom textures, models, fonts, or translations, the appropriate resource pack must still be available on the client.
5. First test
- Start the server.
- Join with a client containing Recipe Item Sync and a supported recipe viewer.
- Search for one of the custom datapack items.
- If it does not appear, run
/recipeitemsync status.
Configuration
Automatic discovery is the default. Most installations do not need custom configuration.
Configuration file
The v3 configuration is stored at:
config/recipeitemsync/recipeitemsync.json
If this file does not exist but the older
config/recipeitemsync/server/recipeitemsync.json file is present, v3 migrates it automatically.
Default configuration
{
"viewerPreference": "auto",
"namespaces": [],
"manualVirtualItems": []
}
viewerPreference
Controls which supported recipe viewer receives Recipe Item Sync content.
| Value | Meaning |
|---|---|
auto | Automatically uses supported installed viewers. |
all | Allows all supported installed viewers. |
jei | Use JEI integration only. |
rei | Use REI integration only. |
emi | Use EMI integration where supported. |
Blank or invalid values fall back to auto.
namespaces
The namespace list acts as an optional allow-list. Leave it empty to allow every eligible namespace.
{
"viewerPreference": "auto",
"namespaces": [
"stellarity",
"my_datapack"
],
"manualVirtualItems": []
}
Wildcard-style entries such as stellarity:* are also accepted.
Keep namespaces empty unless you specifically need to restrict which datapacks are exposed.
Commands
Recipe Item Sync administration commands require Minecraft permission level 2.
/recipeitemsync status
Shows the current synchronization state and snapshot diagnostics.
/recipeitemsync clientstatus
Shows Recipe Item Sync synchronization diagnostics.
/recipeitemsync resync <player>
Rebuilds the server snapshot and schedules a fresh sync for the selected player or players.
/recipeitemsync resync all
Rebuilds the snapshot and schedules a fresh sync for every online player.
/recipeitemsync dump
Writes a diagnostic snapshot report inside recipeitemsync-dumps.
/recipeitemsync give <virtualId>
Gives the resolved virtual ItemStack to the command player. Available virtual IDs are suggested by the command.
When should I use resync?
A resync is useful after modifying datapack content or the Recipe Item Sync configuration when you want to immediately rebuild the current snapshot for connected players.
Diagnostic dump
If an item or recipe is missing, /recipeitemsync dump is the most useful command to run before making a bug report.
Advanced usage
Manual entries and custom crafting support are intended as fallbacks when automatic discovery cannot represent the content safely.
Manual virtual items
Automatic discovery should be preferred. manualVirtualItems can expose a specific virtual ItemStack when the normal datapack source cannot be discovered.
{
"viewerPreference": "auto",
"namespaces": [],
"manualVirtualItems": [
{
"virtualId": "my_pack:ancient_relic",
"hostItem": "minecraft:paper",
"customModelData": 1001,
"displayName": "Ancient Relic",
"tooltip": [
"A manually exposed datapack item"
]
}
]
}
| Field | Purpose |
|---|---|
virtualId | Unique Recipe Item Sync identifier. |
hostItem | Vanilla or modded base item used for the displayed stack. |
customModelData | Optional positive CustomModelData value. |
displayName | Optional display name hint. |
tooltip | Optional tooltip lines. |
Datapack author recommendations
- Use stable recipe and loot-table identifiers.
- Keep output ItemStacks deterministic whenever possible.
- Use standard data components for names, lore, CustomModelData, and custom data.
- Keep visual assets in a separate client resource pack.
Custom item-entity crafting
Static item-entity crafting systems can be exposed when Recipe Item Sync can safely determine the required inputs, exact dropped-item counts, and a deterministic output.
Recipe viewer differences
| Viewer | Current v3 behavior |
|---|---|
| JEI | Virtual items plus supported dedicated datapack recipe displays. |
| REI | Virtual items are synchronized; dedicated custom datapack categories are more limited. |
| EMI | Supported on 1.21.1. Application follows EMI's plugin reload lifecycle. |
What cannot always be represented?
Arbitrary mcfunction systems may depend on scoreboards, random state, entity state, command chains, or other runtime logic. Recipe Item Sync only exposes a custom system when its inputs and outputs can be represented safely and deterministically.
Troubleshooting
Start with the status and dump commands. They usually tell you whether the problem is collection, synchronization, or the recipe viewer.
My custom item does not appear
- Confirm that server and client use the correct Recipe Item Sync build.
- Confirm that the client has a supported recipe viewer installed.
- Run
/recipeitemsync status. - Run
/recipeitemsync dump. - Check that
namespacesis not filtering the datapack out. - Run
/recipeitemsync resync all. - Check both server and client logs for Recipe Item Sync messages.
The item appears with the wrong texture
This is normally a resource-pack issue. Recipe Item Sync transfers ItemStacks and recipe metadata, not textures or models.
The datapack uses commands or functions
Command-driven systems are only supported when the required input and deterministic output can be inferred safely. Highly dynamic mcfunction logic may not produce a displayable recipe.
After /reload
Recipe Item Sync is designed to rebuild supported datapack content after reloads without leaving stale duplicate entries. If the viewer does not refresh correctly, run /recipeitemsync resync all and inspect the logs and dump.
Known limitations
- Virtual datapack items are not registered as normal registry items.
- Resource-pack assets are not synchronized.
- Highly custom modded recipe types may expose an output without a safe recipe layout.
- Dedicated custom categories are not identical across JEI, REI, and EMI.
Bug reports
Please include:
- Minecraft version.
- NeoForge version.
- Recipe Item Sync version.
- Recipe viewer and version.
- Server and client logs.
- The output generated by
/recipeitemsync dump, if possible.
Join the Our Story Network Discord and provide the diagnostic information above.