Mekanism Dynamic Tank Calculator

Formulas from the Mekanism 1.21.1-10.7.19.85 source

Pick a size and see how much fluid or chemical the tank holds, what to build it from, how long it takes to fill and what a comparator reads. Or type a capacity and get the smallest tank that holds it. Every number comes from Mekanism's TankMultiblockData and its multiblock validator.

—

Drag to rotate. Right-drag, Shift-drag or two-finger drag to pan. Scroll or pinch to zoom.

Result

    Comparator level for each fill amount

    The least the tank must hold for each signal strength on a comparator reading a Dynamic Valve.

    Server config

    Edit values from config/Mekanism/general.toml

    Walls and valves

    Glass and casing hold the same amount; glass only lets you see in. Valves go on the bottom row of the front face first.

    Contents

    Fill rate in mB per tick, whatever your pipes, tubes or pump deliver. Chemicals are gases, infuse types, pigments and slurries.

    Tank size

    Outside size, walls included: 3 to 18 blocks each way.

    buckets

    Share this design

    The link opens this exact tank. Paste a design code above to load it.

    Build it in Minecraft

    Put the file in .minecraft/schematics to load it with Create's Schematic Table or Litematica, or in saves/<world>/generated/minecraft/structures to load it with a structure block.

    What the code actually says

    The walls count toward capacity

    Capacity uses the tank's outside volume, walls and all, not the air inside. A 3×3×3 tank has one block of air in it and still holds 9,450 buckets.

    volume   = length × width × height
    capacity = volume × fluidPerTank   (350,000 mB)
    MultiblockData.setShape · TankMultiblockData.setVolume

    Fluid or chemical, one at a time

    The tank is one fluid tank and one chemical tank merged together. Only one can hold anything at a time. The chemical side holds 16,000,000 mB per block, about 46× the fluid side.

    fluid    = volume × 350,000 mB
    chemical = volume × 16,000,000 mB
    TankMultiblockData (MergedTank)

    Edges must be tank blocks

    Every edge position needs a frame block, and only the Dynamic Tank block counts as frame. Dynamic Valves and Structural Glass are fine anywhere on the faces.

    edge:  Dynamic Tank only
    face:  Dynamic Tank, Dynamic Valve, Structural Glass
    inside: air only
    TankValidator · CuboidStructureValidator.validateFrame

    Only valves talk to comparators

    A comparator on a Dynamic Valve reads the fill level; the plain tank blocks give nothing. Any amount at all gives 1, and 15 means completely full.

    f      = stored / capacity
    signal = floor(f × 14) + (f > 0 ? 1 : 0)
    MekanismUtils.redstoneLevelFromContents

    18 × 18 × 18 is the ceiling

    Tanks are 3 to 18 blocks on every side. The biggest holds 2,041,200 buckets of fluid. The config caps fluidPerTank at 368,224 so that tank's capacity still fits in a Java int.

    max fluidPerTank = 2,147,483,647 / 18³
                     = 368,224
    CuboidStructureValidator · GeneralConfig

    Cubes are cheapest per bucket

    You only place the shell, and a cube encloses the most volume for the fewest wall blocks. A 10×10×10 tank takes 488 blocks for 350,000 buckets; a flat 3×18×18 takes 716 blocks and holds less.

    blocks = L×W×H − (L−2)(W−2)(H−2)
    geometry