Super Factory Manager, usually shortened to SFM, is a Minecraft automation mod where one block runs your whole base. You connect your
Chests, machines and tanks to a
Factory Manager with
Inventory Cables, then write a short program that tells it what to move and where it should go.

The programs are written in a language called SFML, which reads a lot like plain English, so a two line program is enough to empty one Chest into another. There’s no pipes to route and no filters to set up block by block, which is why SFM ends up in so many tech modpacks once people get used to it.
This guide covers everything you need to get going, from crafting the Factory Manager and labeling your inventories, to writing programs with filters, fluids, energy and IF statements. There’s also a section of example programs you can copy straight into a disk, and a look at the extra blocks like the Printing Press and Water Tank.
Getting Started with Super Factory Manager
To start using Super Factory Manager you’ll need four things, which are a
Factory Manager, some
Inventory Cables, a
Program Disk and a
Label Gun. The Factory Manager is the block that runs the program, the Program Disk is where the program is saved, and the Label Gun is how you tell the program which inventory is which.
The Factory Manager is crafted with a
Chest in each corner, an Inventory Cable on each side and a
Redstone Repeater in the middle. It’s cheap enough that you can have several of them around your base, and each one runs its own disk, so it’s normal to have one manager for smelting and another one for your storage.
Inventory Cables are made from
Iron Bars, a Chest,
Light Weighted Pressure Plates and
Black Dye, and one craft gives you 16 of them. The cables don’t move anything on their own, they just connect every block that touches them to the Factory Manager, so a cable only needs to touch the side of an inventory for it to count.
The Program Disk takes two
Paper, a
Block of Redstone, a Redstone Repeater, two Redstone and three dyes, one each of Red, Green and Blue. You only need one disk per manager, since a single disk can hold a lot of separate triggers, and you can always copy a finished disk later on with the Printing Press rather than typing it all out again.
Once you’ve got everything, place the Factory Manager, run Inventory Cables from it to every Chest and machine you want to use, and put the Program Disk into the manager. The manager doesn’t need power of any kind, and long runs of cable are fine as long as the chunks stay loaded, so the manager doesn’t have to sit right next to your machines.
Labeling Inventories with the Label Gun
Super Factory Manager programs never use coordinates, instead every inventory you want to use gets a label, like furnace or storage. The
Label Gun is the tool that hands out these labels, and it’s the part of the mod that confuses new players the most, so it’s worth getting it right before you write any code.

Right-click the air with the Label Gun to open it, then type a name to make a new label and select it. After that you just right-click each block you want to add, and right-click it again to take the label off. You can put more than one label on the same block, which is handy for a Chest that’s both an input and an output.
The important step people miss is pushing the labels to the Factory Manager. Once you’ve labeled everything, right-click the
Factory Manager with the Label Gun and the labels get saved onto the disk inside it. If you hold the pull modifier key while you click, which is Shift by default, it pulls the labels off the disk into the gun instead.
You can label any block, but the Factory Manager can only use the ones touching its cables, and the disk warns you about labels on blocks that aren’t connected. Holding Ctrl while you click labels every block of the same kind that’s joined together and touching the cables, so a whole row of
Furnaces can be labeled in one go.
In older versions the Label Gun was crafted from
Blue Dye, a
Sign, two
Sticks and
Black Dye. The recipe was removed from the mod files in version 4.27.0 and hasn’t come back as of 4.34.0, so on those versions the only ways to get one are Creative mode or the /sfm kit command, which needs cheats turned on.
If you’re playing on 4.26.0 or older, which a lot of 1.20.1 modpacks still are, the recipe above works fine. There’s also a small reset recipe that clears every label out of a Label Gun if you put it in a crafting grid on its own, which is useful when the list of labels gets too long to scroll through.
Writing Your First Program
Put the
Program Disk into the
Factory Manager and open the manager to get the text editor. There’s an examples button in the editor that loads the mod’s own template programs, and they’re the best place to learn SFML, since they’re always up to date with the version you’re playing on.

The simplest program there is moves everything from one labeled inventory to another. This one runs every 20 ticks, which is once per second, and takes everything out of the inventories labeled a and puts it into the inventories labeled b. The comments starting with two dashes are ignored, so you can leave notes to yourself.
NAME "A simple program"
EVERY 20 TICKS DO
INPUT FROM a
OUTPUT TO b
ENDAn INPUT on its own doesn’t move anything, it only marks where items can come from. The items only move when an OUTPUT statement runs, and they go straight from the source to the destination, there’s no buffer inside the Factory Manager holding them. That also means if the output is full, the items simply stay where they were.
You can also right-click a Program Disk in your hand to edit it without a manager, and Ctrl+V pastes a whole program into the editor. The editor has suggestions as you type and it underlines mistakes, and any problems also get listed on the disk’s tooltip, so hovering over the disk is a quick way to see why a program won’t run.
Triggers and How Often Programs Run
Every program is split into triggers, which are the EVERY blocks that decide when the code inside them runs. The most common one is EVERY 20 TICKS DO, and 20 ticks is also the fastest a timer is allowed to run by default, so writing EVERY 5 TICKS won’t work unless the server config has been changed.
The one exception is energy. A trigger that only moves Forge Energy is allowed to run every single tick, since energy doesn’t cause the same kind of lag that items do. There’s also a redstone trigger that runs once each time the Factory Manager gets a redstone pulse, which is useful for setups you only want to run on demand.
| Trigger | What it does |
|---|---|
| EVERY 20 TICKS DO | Runs once a second on the manager’s own clock |
| EVERY 20 GLOBAL TICKS DO | Runs on the world clock, so several managers stay in sync |
| EVERY 20 PLUS 1 TICKS DO | Adds an offset, useful to stagger two triggers |
| EVERY 300 SECONDS DO | Seconds work too, handy for slow cleanup jobs |
| EVERY REDSTONE PULSE DO | Runs each time the manager gets a redstone pulse |
There’s also a shorthand where EVERY 20G TICKS means the global clock and EVERY 20+1 TICKS adds the offset. The manager’s own clock starts at zero when it’s placed and gets randomized after the chunk unloads, so if two managers need to fire at exactly the same moment, it’s better to use global ticks for both of them.
Input and Output Statements
Most of SFML is just INPUT and OUTPUT statements with extra words added to control what moves. You can name an item, give it an amount, and use an asterisk as a wildcard, so INPUT *ingot* FROM a picks up every kind of ingot in the inventory labeled a. Leaving the item out completely means everything.
EVERY 20 TICKS DO
INPUT
5 stone,
3 iron_ingot,
cobblestone,
FROM a
OUTPUT TO b
ENDThe number in front of an item is how many can move each time the trigger runs. RETAIN works the other way around, it tells SFM how many to leave behind, so INPUT RETAIN 5 stone FROM a will never take the last five
Stone. EACH applies the amount to every item that matches a pattern rather than the total of all of them.
EXCEPT lets you exclude items, and it applies to the whole statement. You can also pick sides and slots on a block, which matters for machines where the top, side and bottom do different jobs. The examples below are all real statements from the mod’s own templates, so they’re safe to copy.
| Statement | What it does |
|---|---|
| INPUT 5 RETAIN 3 stone FROM a | Takes up to 5 Stone but always leaves 3 |
| INPUT 5 EACH *ingot FROM a | Takes up to 5 of every kind of ingot |
| INPUT *ingot* EXCEPT iron_ingot FROM a | Takes every ingot apart from Iron Ingots |
| OUTPUT RETAIN 1 coal TO furnace BOTTOM SIDE | Keeps exactly one Coal in each Furnace’s fuel slot |
| INPUT FROM a TOP SIDE SLOTS 0,1,3-4 | Only uses those slots on the top side |
| OUTPUT TO EMPTY SLOTS IN storage | Only fills empty slots, which cuts down lag in big storage |
| INPUT WITH #forge:gems FROM chest | Matches items by tag instead of name |
Tags are really useful in modpacks, since #forge:ingots catches ingots from every mod without you having to list them. Quoted patterns use full regex, while an unquoted asterisk is turned into a simple wildcard, and the mod’s own examples say the unquoted version is shorter and easier to read, which is usually the one you’ll want.
Fluids, Energy and Other Resource Types
By default every statement moves items, but Super Factory Manager can move fluids and energy too. You do this by putting the resource type in front with two colons, so fluid::water means water and fluid:: on its own means every fluid. The same program can move items, fluids and energy in separate statements.
EVERY 20 TICKS DO
INPUT fluid:: FROM tanks
OUTPUT fluid:: TO machines
FORGET
INPUT fe:: FROM generators
OUTPUT fe:: TO machines
ENDThe shorthand fe:: works for Forge Energy, and so do rf::, energy:: and power::, since the mod treats all four of them as the same thing. Other mods can add their own resource types too, and Super Factory Manager picks up Mekanism’s chemicals automatically when Mekanism is installed alongside it.
| Resource type | Written as | Needs |
|---|---|---|
| Items | stone or item::stone | Nothing, it’s the default |
| Fluids | fluid::water | Nothing |
| Forge Energy | fe:: | Nothing |
| Gas, Infusion, Pigment, Slurry | gas::, infusion::, pigment::, slurry:: | Mekanism installed |
| Redstone | redstone:: | Nothing |
Energy statements are worth putting in their own trigger. A trigger that only has Forge Energy statements in it can run every tick, while one that mixes energy with items is held to the normal 20 tick limit, and a lot of machines drain their buffer faster than once a second can keep up with.
IF Statements and Redstone
IF statements let a program check what’s inside an inventory before it moves anything. You can check if a labeled inventory has more or less than an amount of an item, and use words like some, every and one to decide whether all of the labeled blocks have to match, or just one of them.
EVERY 20 TICKS DO
INPUT FROM source
IF some source HAS gt 10 minecraft:iron_ingot THEN
OUTPUT TO dest1
END
IF redstone ge 2 THEN
OUTPUT TO dest2
END
ENDThe redstone check looks at the signal going into the Factory Manager itself, so a lever or comparator next to the manager can switch parts of the program on and off. The comparisons can be written as symbols like > and >= or as words like gt and ge, and the mod treats both of them exactly the same.
By default a check on a label counts the total across every block with that label, which the mod calls overall. So if you’ve got Chests labeled a holding 5, 5 and 10
Stone, then a HAS eq 5 stone is false because there’s 20 in total, while some a HAS eq 5 stone is true because at least one Chest matches.
Round Robin, Retain and FORGET
Round robin is one of the most searched parts of SFM, but the mod’s own examples say you probably don’t need it, and that RETAIN is usually the better answer. If you want to fill every machine evenly, OUTPUT RETAIN 8 TO EACH machine keeps eight in each one without having to rotate between them.
When you do want to rotate, ROUND ROBIN BY BLOCK sends to one labeled block each time the statement runs, and ROUND ROBIN BY LABEL alternates between whole labels. It moves on one block every time the trigger fires, so it’s slower than a normal output, which is why RETAIN is usually the quicker way to spread things out.
EVERY 20 TICKS DO
INPUT FROM source
OUTPUT 128 dirt TO dest ROUND ROBIN BY BLOCK
ENDFORGET is the other keyword you’ll need once programs get longer. An INPUT stays active for the rest of the trigger, so a later OUTPUT can pull from an earlier input by accident. Putting FORGET between two jobs clears every input above it, and it’s the first thing to check when items end up somewhere they shouldn’t.
Super Factory Manager Example Programs
These examples are the ones people search for the most, and they’re all built from the mod’s own templates. They assume you’ve already labeled your blocks with the same names used in the program, so remember to push the labels to the Factory Manager with the Label Gun after you’ve labeled everything.
The furnace setup is the classic first program. Label your input Chest as to be smelted, your fuel Chest as fuel, every
Furnace as furnace and your output Chest as results. It feeds eight items into the top of each Furnace, keeps one fuel in the bottom, and pulls the finished items out.
NAME "Furnace Manager"
EVERY 20 TICKS DO
INPUT FROM "to be smelted"
OUTPUT 8 TO EACH furnace TOP SIDE
FORGET
INPUT FROM fuel
OUTPUT RETAIN 1 TO EACH furnace BOTTOM SIDE
FORGET
INPUT FROM furnace BOTTOM SIDE
OUTPUT TO results
ENDFor storage, a simple sorter moves everything from an input Chest into your main storage, but only into empty slots, then runs a slower pass every five minutes to stack everything together. Filling empty slots is much lighter on the server than checking every stack in a big storage wall every second, which is why the mod suggests it.
NAME "Storage"
EVERY 20 TICKS DO
INPUT FROM mob_loot
OUTPUT TO EMPTY SLOTS IN storage
END
EVERY 300 SECONDS DO
INPUT FROM storage
OUTPUT TO storage
ENDYou can also sort by tag, which works well in modpacks with lots of ores. The program below moves every ingot into the Chests labeled ingots and every gem into the ones labeled gems, and anything that isn’t matched just stays in the input Chest, so you can see straight away what still needs a home.
EVERY 20 TICKS DO
INPUT WITH #forge:ingots FROM input
OUTPUT TO ingots
FORGET
INPUT WITH #forge:gems FROM input
OUTPUT TO gems
ENDCable Types and Facades
As well as the normal
Inventory Cable, Super Factory Manager has a few other cable types for different jobs. They all connect to the Factory Manager the same way, so you can mix them together in one network, and the manager doesn’t care which kind of cable a block happens to be touching.

The Tough and Tunnelled cables were added in version 4.29.0, so they won’t be in older modpacks. The Tunnelled Inventory Cable is the interesting one, since it lets a machine on one side of the cable be reached through it, which is useful when you want to hide the network inside a wall.
| Cable | Made from | What it’s for |
|---|---|---|
| Inventory Cable | Iron Bars, Chest, Pressure Plates, Black Dye | The normal full block cable |
| Fancy Inventory Cable | One Inventory Cable | A thinner cable model that can be waterlogged |
| Tough Inventory Cable | Inventory Cable and Obsidian | Resists explosions |
| Tunnelled Inventory Cable | Inventory Cable and Fences | Passes connections through to the opposite side |
| Tunnelled Factory Manager | Factory Manager and Fences | A manager that passes connections through |
Cables can also be disguised as other blocks, which the mod calls facades. Hold the
Network Tool in your off hand and the block you want in your main hand, then right-click a cable to cover it. Ctrl-click covers a whole connected run of cables, and Ctrl-Alt-click covers the entire network in one go.
Every one of the special cables can be crafted back into a plain Inventory Cable by putting it in a crafting grid on its own, and the Tunnelled Factory Manager turns back into a normal Factory Manager the same way. So there’s no harm trying one out, since you won’t lose the materials if it isn’t what you wanted.
The Network Tool and Fixing Problems
The
Network Tool shows every cable through walls while you hold it, and right-clicking a block face gives you information about what’s connected there. It’s crafted from a
Redstone Lamp, a Sign, a
Heavy Weighted Pressure Plate and two
Iron Ingots, and it’s the first thing to grab when a Factory Manager isn’t doing what you expected.
You might not need it that often though, since pressing Ctrl+I while any inventory is open shows the inspector, which lists what that block exposes to SFM on each side. It’s a quick way to find the right side and slot numbers for a modded machine without having to guess them or look them up.
If a Factory Manager stops working for no reason, the mod’s own known issues list says to press the Rebuild cable network button in the manager first. If that doesn’t fix it, the /sfm bust_cable_network_cache command resets every cable network, and the developer admits in the notes that they don’t know why it sometimes happens.
Water Tank
The
Water Tank is a small extra block that makes infinite water for your programs. It needs two water source blocks next to it to work, and it’s crafted from a
Water Bucket,
Iron Bars and a
Light Weighted Pressure Plate. Once it’s active it refills itself, so you can pull water from it with fluid::water forever.
Water Tanks get a lot bigger when you put active ones next to each other. A single Water Tank holds one bucket, two connected ones hold two buckets each, and every extra tank doubles it again, so a small cluster of them can supply a lot of machines at once. The tanks only count if they’re active themselves, so each one still needs its own water around it.
Printing Press, Printing Forms and Experience
The
Printing Press copies things, including Program Disks,
Enchanted Books, written books and maps. It needs a
Piston facing down above it with one block of air in between, and each time the Piston pushes, it prints one copy using one ink. You right-click the Printing Press to put the form, ink and paper into it.

The Printing Press itself is crafted from an
Anvil, a Piston, two
Stone, two
Iron Bars, a
Black Dye and two Light Weighted Pressure Plates. It’s worth building next to your Factory Manager, since the ink and paper slots can be filled by a program, and a redstone clock on the Piston keeps it printing.
The form is the thing you’re copying, and you make a
Printing Form by dropping the item on a
Block of Iron or
Block of Copper and letting an Anvil fall on top of it. Be careful with this, because the original item and the block underneath both get used up, so for a Program Disk it’s best to make the form from a spare copy.
| Copy | Form made from | Ink | Paper |
|---|---|---|---|
| Program Disk | A Program Disk | Black Dye | A Program Disk |
| Enchanted Book | An Enchanted Book | Experience Goop | A Book |
| Written Book | A Written Book | Black Dye | A Book |
| Map | A Filled Map | Black Dye | An Empty Map |
Experience Goop comes from the other anvil trick. Drop an Enchanted Book on
Obsidian or
Crying Obsidian and let an Anvil fall on it, and it breaks into an
Experience Shard, which is one shard per book on the default config. Nine Experience Shards craft into one
Experience Goop, which is the ink for copying Enchanted Books.
The same Obsidian trick can also strip enchantments off gear. Drop an enchanted tool along with some plain
Books and the falling Anvil moves each enchantment onto its own book, as long as you’ve dropped enough books for every enchantment. It doesn’t cost any experience either, so it’s a cheap way to reuse enchantments from gear you’ve outgrown.
Tips
Always push your labels to the Factory Manager after changing them. The disk remembers the labels from the last push, not what’s on the blocks now, so a new Chest you just labeled won’t be used until you right-click the manager with the Label Gun again. The disk tooltip lists every label and how many blocks it has.
Keep separate jobs in separate EVERY blocks, or split them with FORGET. It’s much easier to find a problem in three short triggers than in one long one, and it stops an input from one job leaking into another. Using the NAME line at the top also makes it easier to tell your disks apart later on.
Use RETAIN instead of exact amounts when you’re feeding machines. Keeping a few items in each machine means they never run dry between triggers, and it stops a single fast machine from hogging all of the input, which is what most people are actually trying to fix when they go looking for round robin.
Check the mod version before following a video or an older guide. The Label Gun recipe was removed in 4.27.0, the Tough and Tunnelled cables only exist from 4.29.0 onward, and older versions defaulted item names to minecraft, so a program written for one version might need a couple of small changes to work on another one.
FAQ
The best documentation is inside the mod itself. The examples button in the Factory Manager’s editor loads the mod’s own template programs, which cover filters, limits, triggers, IF statements, round robin and tags, and they’re updated with every version, so they’ll always match the version you’re playing on.
The Label Gun recipe was removed from the mod files in version 4.27.0 and is still missing in 4.34.0. On those versions you can only get one from Creative mode or the /sfm kit command with cheats on, while 4.26.0 and older still use the old recipe with dyes, a Sign and Sticks.
The usual reasons are that the labels weren’t pushed to the manager with the Label Gun, that the inventory isn’t touching a cable, or that the program only has an INPUT with no OUTPUT. Timers faster than 20 ticks also won’t run unless the trigger only moves energy, and the disk tooltip lists any errors.
Yes, it can. Put fluid:: in front of a fluid name to move fluids and fe:: to move Forge Energy, and with Mekanism installed it can also move gas, infusion, pigment and slurry. A trigger that only moves Forge Energy is allowed to run every tick instead of once a second.








