Back to mods
Recipe Linkage project artwork

CurseForge · Minecraft mod

Recipe Linkage

A data-driven research table mod where players solve item-linkage puzzles to unlock AStages progression in modpacks.

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which Recipe Linkage release should I use?

Updated 2 months ago
Latest stable file recipe_linkage-0.0.3+1.21.1.jar
Game version 1.21.1
Loader NeoForge

Recipe Linkage recipe_linkage-0.0.3+1.21.1.jar targets 1.21.1 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. All 1 required mods have matching files.

Where it goes

Is Recipe Linkage required on the client, server, or both?

The project page does not say whether this file belongs on the client, dedicated server, or both.

Client Source doesn’t say
Dedicated server Source doesn’t say
Loader for this release NeoForge
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

The source does not explicitly classify this release as client-only or server-only.

What else does Recipe Linkage recipe_linkage-0.0.3+1.21.1.jar need?

recipe_linkage-0.0.3+1.21.1.jar. Change the file and its required mods may change too.

All 1 required mods have matching files

Install AStages first. We found matching files for this game-version and loader setup. 21 come through another mod in the chain.

3 listed on this file 21 pulled in by those mods
AStages Needed by Recipe Linkage recipe_linkage-0.0.3+1.21.1.jar
required
Matching file found Matched file: astages-2.5.3-1.21.1
Sophisticated Backpacks Optional for Recipe Linkage recipe_linkage-0.0.3+1.21.1.jar
optional
Matching file found Matched file: sophisticatedbackpacks-1.21.1-3.26.12.2208.jar
Just Enough Items (JEI) Optional for Recipe Linkage recipe_linkage-0.0.3+1.21.1.jar
optional
Matching file found Matched file: 19.64.0.455 for NeoForge 1.21.1
Jade 🔍 Needed by AStages
pulled in
Matching file found Matched file: [NeoForge 1.21.1] 15.10.6
FastWorkbench Needed by AStages
pulled in
Matching file found Matched file: FastWorkbench-1.21.1-9.1.3.jar
In Control! Needed by AStages
pulled in
Matching file found Matched file: InControl - 1.21-10.3.0
KubeJS Needed by AStages
pulled in
Matching file found Matched file: KubeJS NeoForge 2101.7.2-build.377
Crafting Tweaks Needed by Sophisticated Backpacks
pulled in
Matching file found Matched file: craftingtweaks-neoforge-1.21.1-21.1.11.jar
Sophisticated Core Needed by Sophisticated Backpacks
pulled in
Matching file found Matched file: sophisticatedcore-1.21.1-1.5.13.2404.jar
TrashSlot Needed by Sophisticated Backpacks
pulled in
Matching file found Matched file: trashslot-neoforge-1.21.1-21.1.11.jar
Sawmill Needed by Sophisticated Backpacks
pulled in
Matching file found Matched file: sawmill-1.21-1.8.1-neoforge
Chipped Needed by Sophisticated Backpacks
pulled in
Matching file found Matched file: [NeoForge] Chipped 4.0.2
Curios API Needed by Sophisticated Backpacks
pulled in
Matching file found Matched file: curios-neoforge-9.5.1+1.21.1.jar
Item Borders [Neo/Forge] Needed by Sophisticated Backpacks
pulled in
Matching file found Matched file: ItemBorders-1.21-neoforge-1.2.5.jar
MezzConfig Needed by Just Enough Items (JEI)
pulled in
Matching file found Matched file: MezzConfig 0.6.8 for NeoForge 1.21.1
MezzConfigGUI Needed by Just Enough Items (JEI)
pulled in
Matching file found Matched file: MezzConfig GUI mc1.21.1-0.5.5 for NeoForge
Placebo Needed by FastWorkbench
pulled in
Matching file found Matched file: Placebo 1.21.1-9.9.4
Architectury API Needed by Roughly Enough Items Fabric/Forge/NeoForge (REI)
pulled in
Matching file found Matched file: [NeoForge 1.21] v13.0.11
The Lost Cities Needed by In Control!
pulled in
Matching file found Matched file: LostCities - 1.21-8.4.6
Game Stages Needed by In Control!
pulled in
No matching file
Better Advanced Tooltips Needed by KubeJS
pulled in
Matching file found Matched file: better-advanced-tooltips-2101.1.0-build.5.jar

21 extra mods were pulled in by other dependencies. Indented rows show who needs each one. We only count dependency files that match this setup. A file for another loader does not fill the gap.

Before you install it

Add Recipe Linkage without breaking your instance.

Built for Recipe Linkage recipe_linkage-0.0.3+1.21.1.jar. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use recipe_linkage-0.0.3+1.21.1.jar. It targets 1.21.1 with NeoForge; another release may have different loader, side or dependency requirements.

  2. 02

    Bring the mods it needs

    Install AStages first. We found matching files for this game-version and loader setup. 21 come through another mod in the chain.

  3. 03

    Put it on the correct side

    The project page does not say whether this file belongs on the client, dedicated server, or both.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside recipe_linkage-0.0.3+1.21.1.jar. It opens that exact file at the source.

About this project

What does Recipe Linkage add?

image Recipe Linkage is a data-driven research table mod for Minecraft NeoForge 1.21.1, with Forge 1.20.1 support.

It is made for modpacks that want recipes, machines, or progression steps to feel like discoveries instead of simple quest rewards. Pack authors define research samples through datapacks, then players solve material-linkage puzzles on a dedicated research table to unlock configured progression stages.

What Does It Add?

  • A new Recipe Research Table block
  • Reusable Research Samples with persistent graph progress
  • Icon-based research graphs built from item relationships
  • Material submission puzzles with visible targets
  • AStages progression rewards for completed research
  • Optional JEI and Sophisticated Backpacks quality-of-life support

How Research Works

Players insert a bound research sample into the table. The sample generates a fixed research graph and keeps that graph forever.

The target is visible, but the route must be opened by submitting related materials. Available nodes show item icons and required counts, so the puzzle is about choosing an efficient path through the graph instead of guessing a written riddle.

The final target node does not consume an item. Research is complete once the reached path connects to the target.

Completed samples can be right-clicked to claim their configured stage. Server configs can control whether stages are awarded automatically on completion and whether claimed samples are consumed.

Designed For Modpacks

Recipe Linkage does not ship built-in research content. Every research is loaded from datapacks, so pack authors decide exactly what each sample represents.

Research nodes can use:

  • A specific item
  • An item tag
  • A required count; omitted count defaults to 1, while count: 0 checks possession without consuming the item
  • Optional custom-data matching
  • Optional fixed coordinates, or automatic graph layout
  • Weighted edges for randomized route generation
  • Localized research titles through Minecraft text components

This makes it useful for gated recipes, themed technology chains, magic discoveries, chapter milestones, or any progression where materials should hint at their own relationships.

Progression And QoL Integrations

  • AStages: the progression output for completed research.
  • JEI: hover a research node and use JEI lookup for the required material.
  • Sophisticated Backpacks: material submissions can pull matching items from carried backpacks when enabled.

AStages gives completed samples their progression result. JEI and Sophisticated Backpacks are optional quality-of-life integrations.

Important Notes

  • Research samples are not consumed by the table.
  • Removing a sample does not reset its graph.
  • Submitted materials are not refunded.
  • Generated routes do not reroll after the sample is created.
  • The base mod provides no default research samples; packs must provide them through datapacks, quests, loot, commands, KubeJS, or another delivery system.

For Pack Authors

Configuration

Pack and server owners can tune behavior in config/recipe_linkage-common.toml:

  • autoAwardStageOnCompletion: default true, grants the configured stage when research is completed.
  • consumeCompletedSampleOnClaim: default false, controls whether right-click claiming consumes a completed sample.
  • revealCompletedGraph: default false, controls whether completed research reveals the full generated graph.
  • enableSophisticatedBackpackMaterials: default true, allows material submissions to pull from carried Sophisticated Backpacks.

Datapack Path

Research JSON files are loaded from:

data/<namespace>/recipe_linkage/researches/<path>.json

Loaded research definitions also appear as ready-to-use bound samples in the Recipe Linkage creative tab. For command-based delivery, NeoForge 1.21.1 uses minecraft:custom_data:

/give @p recipe_linkage:research_sample[minecraft:custom_data={RecipeLinkage:{Research:"modpack:basic_optics"}}]

Forge 1.20.1 uses legacy item NBT:

/give @p recipe_linkage:research_sample{RecipeLinkage:{Research:"modpack:basic_optics"}}

AStages + KubeJS Recipe Gate Example

This example binds the redstone comparator recipe to the same target_stage: "basic_optics" used by the research JSON. Recipe Linkage grants that AStages stage when the research is completed; the AStages KubeJS API makes the recipe require that stage.

Place this script in kubejs/server_scripts/recipe_linkage_stages.js:

// Requires: AStages, KubeJS
AStages.addRestrictionForRecipe(
  'recipe_linkage:basic_optics_comparator',
  'basic_optics',
  'minecraft:crafting',
  'minecraft:comparator'
)

If you use the full example below with target_stage: "redstone_lens", replace basic_optics with redstone_lens.

Minimal Auto-Layout Example

This example omits all x and y fields. Recipe Linkage will automatically place the graph with the start side on the left and the target on the right.

Save as data/modpack/recipe_linkage/researches/basic_optics.json:

{
  "target_stage": "basic_optics",
  "target": "comparator",
  "min_distance_to_target": 3,
  "nodes": [
    { "id": "sand", "tag": "minecraft:sand", "count": 8 },
    { "id": "glass", "item": "minecraft:glass", "count": 3 },
    { "id": "redstone", "item": "minecraft:redstone", "count": 4 },
    { "id": "quartz", "item": "minecraft:quartz", "count": 2 },
    { "id": "comparator", "item": "minecraft:comparator" }
  ],
  "edges": [
    { "from": "sand", "to": "glass" },
    { "from": "glass", "to": "redstone" },
    { "from": "redstone", "to": "quartz" },
    { "from": "quartz", "to": "comparator" }
  ]
}

If initial_nodes is omitted, the mod chooses a valid initial node when the sample graph is generated. If chance is omitted on an edge, it defaults to 1.0.

Fully Customized Example

This example uses a localized title, fixed coordinates, multiple initial nodes, tag input, custom-data input, and weighted edges.

Save as data/modpack/recipe_linkage/researches/redstone_lens.json:

{
  "title": {
    "translate": "research.modpack.redstone_lens",
    "fallback": "Redstone Lens"
  },
  "target_stage": "redstone_lens",
  "target": "comparator",
  "min_distance_to_target": 4,
  "generation_attempts": 96,
  "initial_nodes": ["sand", "copper"],
  "nodes": [
    { "id": "sand", "tag": "minecraft:sand", "count": 8, "x": 5, "y": 58 },
    { "id": "copper", "item": "minecraft:copper_ingot", "count": 3, "x": 8, "y": 78 },
    { "id": "glass", "item": "minecraft:glass", "count": 3, "x": 25, "y": 52 },
    { "id": "redstone", "item": "minecraft:redstone", "count": 4, "x": 42, "y": 30 },
    { "id": "quartz", "item": "minecraft:quartz", "count": 2, "x": 55, "y": 42 },
    { "id": "note", "item": "minecraft:paper", "count": 1, "nbt": "{\"recipe_linkage_note\":\"optics\"}", "x": 32, "y": 80 },
    { "id": "spyglass", "item": "minecraft:spyglass", "count": 1, "x": 60, "y": 72 },
    { "id": "daylight_detector", "item": "minecraft:daylight_detector", "count": 1, "x": 76, "y": 56 },
    { "id": "comparator", "item": "minecraft:comparator", "count": 1, "x": 94, "y": 50 }
  ],
  "edges": [
    { "from": "sand", "to": "glass", "chance": 1.0 },
    { "from": "glass", "to": "redstone", "chance": 0.85 },
    { "from": "redstone", "to": "quartz", "chance": 0.9 },
    { "from": "quartz", "to": "comparator", "chance": 0.8 },
    { "from": "glass", "to": "note", "chance": 0.65 },
    { "from": "note", "to": "spyglass", "chance": 0.75 },
    { "from": "copper", "to": "spyglass", "chance": 0.9 },
    { "from": "spyglass", "to": "daylight_detector", "chance": 0.8 },
    { "from": "daylight_detector", "to": "comparator", "chance": 0.7 },
    { "from": "redstone", "to": "daylight_detector", "chance": 0.55 }
  ]
}

Add the title translation in a resource pack or KubeJS assets, for example assets/modpack/lang/en_us.json:

{
  "research.modpack.redstone_lens": "Redstone Lens"
}

See the included datapack format documentation and vanilla example datapack for the full reference.

image

image

Project description from CurseForge.

Pick your setup

Recipe Linkage by Minecraft version and loader

Choose the version and loader you play, then open the matching release.

2 available setups

Check the dependencies, then try the file in a copied instance before changing a world you care about.

Recent files

Recipe Linkage versions and loaders

6 of 6 releases match

Looking for an older file? The official CurseForge project page is in Resources.