Throughput

Factorio-style production stats for any Minecraft factory.

Group chests, furnaces and modded storage into a factory, then read per-item rates, history and alerts right in chat.

In game

Stats report for the smelter factory in Minecraft chat, with rates and sparklines
/flow stats smelter 10m Top items with per-minute rates and history.
Alerts report in chat: a blocked container, eight dry containers and Raw Iron running out
/flow alerts smelter Blocked, dry, missing or about to run out.
Live production ticker on the action bar, updating as the furnaces run
/flow watch smelter A live ticker on your action bar while you build.

What it tracks

Per-item rates over four windows

Produced and consumed per minute, averaged over the last 1m, 10m, 1h or 10h, with a sparkline of the window next to every item.

Server-side only

Install it on the server. Players join with an unmodified client and still get every report in chat.

Any container

Chests, barrels, furnaces, hoppers, and modded storage that exposes Fabric item storage, which most tech mods do.

Alerts that point at the bottleneck

BLOCKED
An output has been full for a while, so whatever feeds it is backing up.
RAN DRY
An input is empty, so anything it feeds stalls once its buffers drain.
MISSING
A container is unloaded or no longer a container.
RUNNING OUT
An input is draining, with an estimate of when it hits empty.

Live ticker

/flow watch puts the top output, top input and alert count on your action bar, updated as the factory runs. /flow unwatch clears it.

Safe to open to players

Anyone can read stats. Creating and editing factories needs operator permission, and alert coordinates are only shown to people allowed to see them.

How it counts

Every second of game time, Throughput reads each tracked container and adds up the per-item change. The sum is the factory's real net production.

Internal moves cancel out

A hopper taking ore from one tracked chest into a tracked furnace is a minus in one place and a plus in the other. The factory total does not change.

No phantom consumption

A container that unloads or breaks contributes nothing. A chunk unloading never looks like the factory ate everything; it shows up as MISSING instead.

Double chests count once

Adding a double chest tracks both halves, and each half is read on its own, so items are never counted twice.

Game time, saved with the world

History follows game time and is stored with the world, so it survives restarts and pauses.

Commands

/throughput and the short alias /flow do the same thing. A first factory takes three commands:

> /flow factory create smelter
> /flow addarea smelter ~-4 ~-1 ~-4 ~4 ~2 ~4
> /flow stats smelter 10m

Reading is open to everyone. Changing factories needs operator permission by default, or the matching node with a permissions mod.

Throughput commands
CommandWhat it does
Set up a factory
factory create <name>New factory in your current dimension.
factory delete <name>Delete a factory and its history.
factory listList every factory on the server.
add <factory> [pos]Track the container you look at, or the one at pos. Double chests add both halves.
addarea <factory> <from> <to>Track every container inside a box.
remove <factory> [pos]Stop tracking a container.
Read it
stats <factory> [1m|10m|1h|10h]Top produced and consumed items with rates and sparklines.
alerts <factory> [all]Blocked outputs, dry inputs, missing containers and time to empty, grouped per kind. all lists every container.
watch <factory>Live ticker on your action bar.
unwatchStop the ticker.
Administer
reloadReload config/throughput.json without a restart.

For server owners

Permissions

With a permissions mod, these nodes decide. Without one, the default operator levels apply.

throughput.use
0List, stats, alerts, watch
throughput.manage
2Create, edit and delete factories
throughput.coordinates
2See container positions in alerts
throughput.admin
3Reload the config

Config

config/throughput.json, applied with /flow reload.

{
  "sampleIntervalSeconds": 1,
  "alertAfterSeconds": 10,
  "runningOutHorizonMinutes": 60,
  "maxContainersPerFactory": 4096,
  "maxAreaBlocks": 32768,
  "permissionLevels": {
    "use": 0, "manage": 2,
    "coordinates": 2, "admin": 3
  }
}

1.75 ms

median time to sample a factory of 4,096 chests, measured with tools/benchmark.sh.

Your data stays safe

If saved data is from a newer version, unparseable, or cut short by a crash, Throughput backs it up, never overwrites it, and goes read-only until you sort it out.

Install

Needs Minecraft 26.3, Fabric Loader 0.19.5 or newer, Fabric API and Java 25.

On a server

  1. Set up a Fabric server for Minecraft 26.3.
  2. Put the Throughput jar and Fabric API in the server's mods/ folder.
  3. Restart. Players join with a vanilla client, nothing to install on their side.

In singleplayer

  1. Install Fabric Loader for 26.3 with the Fabric installer.
  2. Put the Throughput jar and Fabric API in .minecraft/mods/.
  3. Start the Fabric profile and open a world with commands allowed.
Get it on CurseForge

FAQ

Do players need to install anything?

No. Throughput runs on the server only and sends plain chat and action-bar text, so vanilla 26.3 clients can join and use every command they have permission for.

Will it slow my server down?

It only reads the containers you add to a factory, once per second of game time. Server owners can cap the size of addarea boxes and the number of containers per factory in the config.

Does it work with modded storage?

Yes, for any block that exposes Fabric item storage (the Transfer API). Most tech mods do, so drawers, crates and machine inventories usually just work.

What about fluids and energy?

Not yet. Throughput tracks items only for now.

Are enchanted or renamed items counted separately?

No. Items are grouped by item id, so an enchanted pickaxe and a plain one count as the same item.

Can regular players see where my factory is?

Only if you let them. Alerts show container coordinates to operators (or anyone with throughput.coordinates) and leave them out for everyone else.