RIS Recipe Item Sync v3 Documentation
Ctrl K
25% OFF Servers BisectHosting โ€ข Code OurStory Discord Join the server CurseForge Recipe Item Sync Modrinth Recipe Item Sync
Recipe Item Sync v3

Recipe Item Sync

Make server-side datapack items and supported custom recipes visible in JEI, REI, and EMI.

The datapack can stay server-side.

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

MinecraftNeoForgeJEIREIEMI
1.21.121.1.238+โœ…โœ…โœ…
26.226.2.0.88+โœ…โœ…Not available yet
Minecraft 26.2 and EMI

The emi preference remains recognized for configuration compatibility, but cannot be used on 26.2 until a compatible EMI release exists.

How synchronization works

  1. CollectThe server scans supported recipe and datapack sources.
  2. BuildVirtual ItemStacks and recipe metadata are normalized into a snapshot.
  3. SyncThe snapshot is sent to Recipe Item Sync clients.
  4. 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.

Getting started

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.

MinecraftRecipe Item Sync buildNeoForge
1.21.1recipeitemsync-3.0.jar21.1.238+
26.2recipeitemsync-26.2-3.0.jar26.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

Recipe Item Sync does not distribute assets.

If the datapack uses custom textures, models, fonts, or translations, the appropriate resource pack must still be available on the client.

5. First test

  1. Start the server.
  2. Join with a client containing Recipe Item Sync and a supported recipe viewer.
  3. Search for one of the custom datapack items.
  4. If it does not appear, run /recipeitemsync status.
Server configuration

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.

ValueMeaning
autoAutomatically uses supported installed viewers.
allAllows all supported installed viewers.
jeiUse JEI integration only.
reiUse REI integration only.
emiUse 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.

Recommended

Keep namespaces empty unless you specifically need to restrict which datapacks are exposed.

Administration

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.

Datapack authors & modpacks

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"
      ]
    }
  ]
}
FieldPurpose
virtualIdUnique Recipe Item Sync identifier.
hostItemVanilla or modded base item used for the displayed stack.
customModelDataOptional positive CustomModelData value.
displayNameOptional display name hint.
tooltipOptional 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

ViewerCurrent v3 behavior
JEIVirtual items plus supported dedicated datapack recipe displays.
REIVirtual items are synchronized; dedicated custom datapack categories are more limited.
EMISupported 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.

Support

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

  1. Confirm that server and client use the correct Recipe Item Sync build.
  2. Confirm that the client has a supported recipe viewer installed.
  3. Run /recipeitemsync status.
  4. Run /recipeitemsync dump.
  5. Check that namespaces is not filtering the datapack out.
  6. Run /recipeitemsync resync all.
  7. 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.
Need help?

Join the Our Story Network Discord and provide the diagnostic information above.