๐ One cheese. Every recipe.
Croptopia has cheese. Pam's has cheese. Meadow has cheese. Brewin' & Chewin' has cheese. None of them are the same cheese โ they all tag their food, in four incompatible naming dialects that never reference each other. So the recipe that wants cheese takes exactly one of them, and your pack quietly runs parallel food economies that never touch. Kaleidoscope Cookery's wok will not even light unless you hand it its cooking oil, with five other mods' oils sitting in the same chest.
Pantrywork fixes that. It is pure data: a tag layer that bridges those dialects into the official
NeoForge / Farmer's Delight c:foods/* convention, then adds a second layer describing what an
ingredient does. No blocks, no items, no gameplay changes. Just recipes that finally work.
NeoForge on Minecraft 1.21.1 and 26.1โ26.2, Fabric on 1.21.1โ1.21.11 and 26.1โ26.2 (Fabric needs Fabric API), and Forge on 1.20.1. The 1.20.1 file bridges 21 of the 24 mods and leaves out the swaps that need a conditional overlay, because that version has none โ the "Forge 1.20.1" section below says exactly which, and the changelog says it again.
๐ท๏ธ Two layers
Identity โ c:foods/*. Extends the built-in convention and translates the others into it.
Croptopia's plural dialect (c:cheeses), Pam's concatenated dialect (c:rawpork), and Farm &
Charm's underscored dialect (c:raw_pork) all resolve to canonical names (c:foods/cheese,
c:foods/raw_pork). Bridges run in both directions: 74 of those mods' own dialect tags gain the
other mods' equivalent items (84 tag files in all, the other ten being canonical c:foods/* leaves
like c:foods/corn and c:foods/oranges), so their own recipes accept foreign ingredients โ Meadow's
cheese recipes take Brewin' & Chewin' cheese, Pam's fish recipes take an Aquaculture catch, and
Croptopia's pineapple recipes take a Fish of Thieves pineapple.
Where a mod reads a tag of its own instead of a shared one, Pantrywork writes that tag. Kaleidoscope
Cookery's wok checks #kaleidoscope_cookery:oil before it will cook, so five mods' cooking oils now
prime it โ and that is the gate in front of all 225 of its wok recipes.
And where a mod grows food but files it in no shared tag at all, Pantrywork files it. Oh The Biomes We've Gone's blueberries sat in its own berry tag and in no blueberry tag anywhere, so no other mod could see them; they now reach Hearth and Harvest's five blueberry recipes and Croptopia's three.
Fair swaps only. An item Pantrywork adds to a recipe tag may be at most 1.5x cheaper than the cheapest thing each mod that defines that tag already puts there, counting how it is made (a 16-per-bucket milk bottle costs a sixteenth of a bucket). When only some of those mods accept something that cheap, the swap is added only while one of them is installed (a conditional pack overlay, which the game applies only while that mod is loaded). So a milk bottle never fills a recipe written for a bucket, a bacon strip never counts as a whole porkchop in Pam's recipes, and Refurbished Furniture's six-per-loaf toast stays out of other mods' recipes. The check covers what Pantrywork adds; what each mod lists in its own tags is its own call. Version 0.7.0 removed or made conditional every older swap that failed it, and its changelog lists them all; 0.8.0 removed nothing, and its changelog lists the two swaps that gained a condition and the three conditions that got easier to satisfy. 0.9.0 removed five: Pam's Food Extended files five tofu analogues in its raw beef, pork, mutton and fish tags, and each one is a pressed soybean, so none of them reaches a canonical meat or fish tag through Pantrywork any more. In the same pass four canonical tags โ raw beef, raw pork, raw mutton and raw fish โ stopped pointing at a whole dialect and now list their members, which is what let the tofu in; the members themselves are unchanged.
Role โ pantrywork:food_component/{protein, starch, dairy, garnish, liquid_base, sweetener}.
Tags-of-tags over the identity layer, describing function rather than identity. Author one recipe
against #pantrywork:food_component/protein and it accepts vanilla steak, Farmer's Delight bacon,
and anything a future mod tags โ without you shipping an update. Roles describe what an ingredient
does, not what it costs: dairy holds milk bottles and plant milk next to buckets.
๐ No food mod required
Every cross-mod reference is required: false. Install Pantrywork with all the supported mods, one
of them, or none โ it loads clean either way and simply bridges whatever it finds. On Fabric,
Fabric API is required: it is what loads mod data, and without it Fabric Loader refuses to start and
names the missing dependency.
Server-side only โ drop it on the server and every player benefits, no client install needed. Works in singleplayer too (your game runs an internal server; just install it normally).
Supported: Farmer's Delight (incl. Refabricated on Fabric) ยท Croptopia (incl. Croptopia Refabricated) ยท Pam's HarvestCraft 2 โ all four modules: Food Core, Crops, Trees and Food Extended ยท Ocean's Delight (full identity module) ยท End's Delight (parent joins) ยท [Let's Do] Vinery, Farm & Charm, Meadow ยท Aquaculture 2 ยท Brewin' & Chewin' ยท Create ยท Bountiful Fares ยท Fish of Thieves ยท Refurbished Furniture ยท Kaleidoscope Cookery ยท Hearth and Harvest ยท Cultural Delights ยท Cook's Collection ยท Rustic Delight ยท Hybrid Delights ยท Oh The Biomes We've Gone (a worldgen mod, here for the four fruits it grows) ยท Origins (carnivore/vegetarian diet tags).
๐ง On Forge 1.20.1
There is a Forge 1.20.1 file, and it is a real port rather than a repackage โ on that version the
shared vocabulary is forge: instead of c:, and the tag files live in a differently named folder,
so every file in the payload is rebuilt. The food mods there have the same problem and the same
four dialects: seven spellings of cheese, seven of milk, four of onion with no cross-references
at all, and Hearth and Harvest filing its cheese in a tag nothing else on that version reads.
Two things are smaller than on 1.21.1, and worth knowing before you install it. It bridges 21 of the 24 mods โ Pam's Crops and Trees have no Forge 1.20.1 build and Bountiful Fares is Fabric-only there. And 19 swaps that 1.21 ships conditionally are left out: some substitutions are only fair when a particular mod is installed, 1.21 handles that with a conditional pack overlay, and Minecraft 1.20.1 does not have those. Rather than ship them unconditionally and let an underpriced item into your recipes, this file leaves them out โ cheese, dough, milk, salt, flour, cabbage, chicken parts and sashimi each lose one entry or a few. The practical difference, measured on a running server: with Farm & Charm installed, the 1.21 file unifies six doughs in Croptopia's dough tag and this one unifies two.
Everything else is the same mod, including the fair-swap rule and the price checks behind it, which were re-read from the 1.20.1 recipes rather than assumed unchanged.
๐งโ๐ณ For pack makers
Stop writing one recipe per food mod. Target a role tag and the recipe covers every mod your players have installed, plus the ones they install later.
๐ ๏ธ For mod authors
PantryworkTagKeys (the 1.21.1 NeoForge jar only โ the Fabric, 26.x and Forge 1.20.1 files
are pure data with no classes) exposes the role tags and the most-asked-for identity tags โ
cheese, butter, dough, cooked rice, flour โ as compile-time constants, so you can reference the
taxonomy without hardcoding strings or taking a dependency on the mods being bridged. Anything else
in the layer is a plain c: tag id you can write directly.
โ Verified, not assumed
Every bridge claimed here was checked on a running server, not inferred โ recipe counts are read
out of the mods' own files, but whether a swap works is always measured. The supported mods are loaded
together and the bridges are exercised for real โ Pam's own Grilled Cheese & Ham crafted with
Farm & Charm butter and Brewin' & Chewin' cheese (and refused with Croptopia's cheaper cheese);
Farmer's Delight's egg sandwich made from Pam's and Bountiful Fares eggs; Croptopia's pineapple
chicken made from a Fish of Thieves pineapple on NeoForge 26.2; Croptopia's banana smoothie made
with Farmer's Delight milk; Hearth and Harvest's blueberry crate and Croptopia's blueberry jam made
from Oh The Biomes We've Gone berries; and, new at 0.9.0, two of Pam's Food Extended recipes built
entirely out of other mods' food โ fried onions from Croptopia's onion and Cultural Delights' butter,
and cheese on toast from Croptopia's toast and Meadow's cheese slice. The Fabric build is booted on 1.21.1, 1.21.10, 1.21.11, 26.1.2 and 26.2;
the NeoForge builds on 1.21.1, 26.1.2 and 26.2 โ the 26.1.2 boot on the exact NeoForge build All the
Mods 11 ships, alongside its Croptopia and Aquaculture 2. Separate runs boot it with none of the
supported mods installed, with Farm & Charm removed, and with and without the mods the conditional
swaps depend on โ twelve such combinations on the 1.21.1 release jar alone, which prove
thirteen of the fourteen conditions both open and closed. The few they cannot reach are proven on the
development boot instead, and the changelog says which rather than implying full coverage. Automated
GameTests cover role tags, cross-mod identity, reverse bridges, cost floors, and recipe resolution
through RecipeManager.
Forge 1.20.1 is held to the same standard on its own dedicated server: the file alone passes 50 tag assertions with a log that carries no errors at all, and with 16 of the roster mods loaded it passes 338 across 83 tags. A third boot runs that identical mod set with Pantrywork removed, so the 31 errors those mods log are proven to be theirs and not ours โ the two lists come back identical. On that version the assertions are tag membership rather than crafts (1.20.1 has neither the command nor the block the craft tests use), and the suite was shown able to fail by rebuilding the file with 1.21's folder name: 39 of the 50 assertions fail, which is every one that asserts presence.
Where something cannot be fixed with tags, the changelog says so rather than implying otherwise: a recipe that names an exact item id cannot be widened by any datapack, and several of the supported mods do exactly that.
The two layers: identity tags bridging four dialects, role tags on top.
Target a role tag once and it accepts every supported mod's ingredients โ and future ones too.
Pam's own Grilled Cheese & Ham, crafted with Farm & Charm butter and Brewin' & Chewin' cheese.
All twenty-four bridged mods, with the install-all, some, or none promise
Four mods' cheeses, one shared tag.
| Version | Minecraft | Loader | Download |
|---|---|---|---|
|
Pantrywork 0.10.0+mc1.20.1-forge 0.10.0+mc1.20.1-forge |
1.20.1
|
forge
|
Download |
|
Pantrywork 0.9.0+mc26 0.9.0+mc26 |
26.1.2, 26.2
|
neoforge
|
Download |
|
Pantrywork 0.9.0+mc26-fabric 0.9.0+mc26-fabric |
26.1.2, 26.2
|
fabric
|
Download |
|
Pantrywork 0.9.0+mc1.21.x-fabric 0.9.0+mc1.21.x-fabric |
1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11
|
fabric
|
Download |
|
Pantrywork 0.9.0+mc1.21.1 0.9.0+mc1.21.1 |
1.21.1
|
neoforge
|
Download |
|
Pantrywork 0.8.0+mc26 0.8.0+mc26 |
26.1.2, 26.2
|
neoforge
|
Download |
|
Pantrywork 0.8.0+mc26-fabric 0.8.0+mc26-fabric |
26.1.2, 26.2
|
fabric
|
Download |
|
Pantrywork 0.8.0+mc1.21.x-fabric 0.8.0+mc1.21.x-fabric |
1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
|
fabric
|
Download |
|
Pantrywork 0.8.0+mc1.21.1 0.8.0+mc1.21.1 |
1.21.1
|
neoforge
|
Download |
|
Pantrywork 0.7.0+mc26 0.7.0+mc26 |
26.1.2, 26.2
|
neoforge
|
Download |
|
Pantrywork 0.7.0+mc26-fabric 0.7.0+mc26-fabric |
26.1.2, 26.2
|
fabric
|
Download |
|
Pantrywork 0.7.0+mc1.21.x-fabric 0.7.0+mc1.21.x-fabric |
1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
|
fabric
|
Download |
|
Pantrywork 0.7.0+mc1.21.1 0.7.0+mc1.21.1 |
1.21.1
|
neoforge
|
Download |
|
Pantrywork 0.6.0+mc26 0.6.0+mc26 |
26.1.2, 26.2
|
neoforge
|
Download |
|
Pantrywork 0.6.0+mc26-fabric 0.6.0+mc26-fabric |
26.1.2, 26.2
|
fabric
|
Download |
|
Pantrywork 0.6.0+mc1.21.x-fabric 0.6.0+mc1.21.x-fabric |
1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
|
fabric
|
Download |
|
Pantrywork 0.6.0+mc1.21.1 0.6.0+mc1.21.1 |
1.21.1
|
neoforge
|
Download |
|
Pantrywork 0.5.0+mc26 0.5.0+mc26 |
26.1.2, 26.2
|
neoforge
|
Download |
|
Pantrywork 0.5.0+mc26-fabric 0.5.0+mc26-fabric |
26.1.2, 26.2
|
fabric
|
Download |
|
Pantrywork 0.5.0+mc1.21.x-fabric 0.5.0+mc1.21.x-fabric |
1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
|
fabric
|
Download |
|
Pantrywork 0.5.0+mc1.21.1 0.5.0+mc1.21.1 |
1.21.1
|
neoforge
|
Download |
|
Pantrywork 0.3.0+mc26-fabric 0.3.0+mc26-fabric |
26.1.2, 26.2
|
fabric
|
Download |
|
Pantrywork 0.3.0+mc1.21.x-fabric 0.3.0+mc1.21.x-fabric |
1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
|
fabric
|
Download |
|
Pantrywork 0.3.0+mc1.21.1 0.3.0+mc1.21.1 |
1.21.1
|
neoforge
|
Download |
|
Pantrywork 0.2.0+mc26-fabric 0.2.0+mc26-fabric |
26.1.2, 26.2
|
fabric
|
Download |
|
Pantrywork 0.2.0+mc1.21.x-fabric 0.2.0+mc1.21.x-fabric |
1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
|
fabric
|
Download |
|
Pantrywork 0.2.0+mc1.21.1 0.2.0+mc1.21.1 |
1.21.1
|
neoforge
|
Download |
|
Pantrywork 0.1.0 0.1.0 |
1.21.1, 1.21.10, 1.21.11, 1.21.3, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9
|
fabric
|
Download |
|
Pantrywork 0.1.0 0.1.0 |
1.21.1
|
neoforge
|
Download |