Skip to main content

Overview

Fluid mixing recipes define how the Fluid Mixer combines two or three fluid inputs to produce a new fluid output. The machine performs order-independent matching: any combination of the listed input fluids in any slot order will trigger the recipe. Each recipe requires 1 to 3 fluid inputs and produces exactly 1 fluid output.

Recipe Type ID

gm:fluid_mixing

JSON Format

Fluid mixing recipes are stored under data/<namespace>/recipe/ in a datapack.
{
  "type": "gm:fluid_mixing",
  "inputs": [
    {
      "fluid": "gm:sulfur_dioxide",
      "amount": 1000
    },
    {
      "fluid": "minecraft:water",
      "amount": 1000
    }
  ],
  "result": {
    "fluid": "gm:sulfuric_acid",
    "amount": 1000
  }
}

Fields

FieldTypeRequiredDescription
typestringyesMust be gm:fluid_mixing.
inputsarrayyesList of 1–3 SizedFluidIngredient objects. Each specifies which fluid(s) are accepted and the required amount in millibuckets.
resultobjectyesThe output FluidStack. Requires fluid (registry ID) and amount (millibuckets).

Input (SizedFluidIngredient) format

Each entry in inputs is a NeoForge SizedFluidIngredient using the nested codec. The most common forms are: Single fluid:
{
  "fluid": "gm:crude_oil",
  "amount": 1000
}
Fluid tag:
{
  "tag": "c:fluids/water",
  "amount": 500
}

Result (FluidStack) format

{
  "fluid": "gm:refined_fuel",
  "amount": 1000
}
Amounts are in millibuckets (mB). One standard bucket = 1000 mB.

Adding Custom Fluid Mixing Recipes via Datapack

  1. Create a datapack with the following layout:
    my_datapack/
    └── data/
        └── my_mod/
            └── recipe/
                └── my_fluid_mixing_recipe.json
    
  2. Write the recipe JSON following the format above.
  3. Place the datapack in the datapacks/ folder of your world, or package it inside a mod’s resources/data/ directory.

Example: two-fluid reaction

{
  "type": "gm:fluid_mixing",
  "inputs": [
    { "fluid": "gm:sulfur_dioxide", "amount": 1000 },
    { "fluid": "minecraft:water",   "amount": 1000 }
  ],
  "result": {
    "fluid": "gm:sulfuric_acid",
    "amount": 1000
  }
}

Example: three-fluid reaction

{
  "type": "gm:fluid_mixing",
  "inputs": [
    { "fluid": "gm:crude_oil",  "amount": 2000 },
    { "fluid": "gm:hydrogen",   "amount": 1000 },
    { "fluid": "minecraft:water", "amount": 500 }
  ],
  "result": {
    "fluid": "gm:refined_fuel",
    "amount": 2000
  }
}

Example: single-fluid processing

{
  "type": "gm:fluid_mixing",
  "inputs": [
    { "fluid": "gm:crude_oil", "amount": 1000 }
  ],
  "result": {
    "fluid": "gm:heavy_oil",
    "amount": 750
  }
}

JEI Integration

Fluid mixing recipes are visible in JEI under the Fluid Mixer category. You can:
  • Press R on any fluid bucket to see if it is produced by a fluid mixing recipe.
  • Press U on any fluid bucket to see which fluid mixing recipes consume it.
  • Click the Fluid Mixer icon in the JEI category list to browse all fluid mixing recipes.

Build docs developers (and LLMs) love