Automate is a Stardew Valley mod which lets you place a chest next to machines (like a furnace, cheese press, bee house, etc), and the machines will automatically pull raw items from the chest and push processed items into it.
- Install the latest version of SMAPI.
- Install this mod from Nexus mods.
- Run the game using SMAPI.
Place a chest next to a crafting machine (in any direction including diagonal) to connect it. Machines connected to a chest will push their output into it, and pull ingredients to process out of it.
By default, Automate supports these machines:
- auto-grabbers;
- bee houses;
- bone mills;
- bushes (including blackberry, salmonberry, and tea bushes);
- casks (even outside the cellar);
- charcoal kilns;
- cheese presses;
- coffee makers;
- crab pots;
- crystalariums (once started with the gem/mineral you want);
- deconstructors;
- fish ponds (for output only);
- fruit trees;
- furnaces (don't forget they also need coal);
- garbage cans;
- geode crushers (don't forget they also need coal);
- hay hoppers;
- incubators (for eggs);
- Junimo huts;
- kegs;
- lightning rods;
- looms;
- mayonnaise machines;
- mills;
- mini-shipping bins;
- mushroom boxes;
- oil makers;
- preserves jars;
- recycling machines;
- seed makers;
- shipping bins (can be disabled in
config.json
); - silos;
- slime egg-presses;
- slime incubators;
- soda machines;
- solar panels;
- statues of endless fortune;
- statues of perfection;
- statues of true perfection;
- tappers;
- trees;
- wood chippers;
- and worm bins.
And these containers:
- chests and stone chests;
- farmhouse/cabin fridges;
- hoppers (these act just like chests, except they're output-only);
- Junimo chests;
- mini-fridges;
- and mini-shipping bins.
Automated machines will give you the same XP, achievements, and items you'd get for using them directly. If multiple chests are part of a group, they'll all be used in the automation. Input will be taken from all the chests, and output will be saved to chests in this order:
- chests marked as output chests (see _Configure);
- chests which already contain an item of the same type;
- any chest.
You can combine any number of chests and machines by placing them adjacent to each other, and you
can press U
(configurable) to highlight connected machines.
Here are some example machine group setups. You can increase production by just adding more machines.
-
Automatic crab pots
A worm bin produces bait, which is fed into the crab pots, which harvest fish and recycle trash. The final products are stored in the chest. -
Automatic refined quartz factory
A crystalarium produces quartz, which is smelted into refined quartz, which is stored in the chest. -
Automatic iridium mead factory
A bee house produces honey, which is turned into mead, which is aged to iridium quality, which is stored in the chest. -
Automatic iridium bar factory
A statue of perfection produces iridium ore, which is smelted into bars, which are stored in the chest. -
Semi-automatic iridium cheese factory
Put your milk in the chest and it'll be turned into cheese, then aged to iridium quality, then put back in the chest.
You can optionally configure specific furniture/objects/paths as connectors, which link machines together. For example, here are wooden paths used as connectors:
Workbenches are the only connectors by default. You can edit the config.json
to add connectors
(see configure below).
Every machine and chest connected to a Junimo chest is part of a global machine group. This global group behaves just like a regular machine group (including for machine priority), even if it's spread across many locations.
Due to their special behaviour:
- You can't change input/output options for a Junimo chest. Junimo chests are always automated if at least one is connected to a machine.
- Machines always take items out of a Junimo chest first, and only push items into one if no other chest is available. Items are still available to all machines in the global group either way.
The default order that machines are processed is unpredictable and subject to change, except that shipping bins are processed last by default.
For example, let's say you have this machine setup and you place two tomatoes in the chest:
┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐
│ chest ││ keg ││ keg ││ shipping ││ preserves│
│ ││ ││ ││ bin ││ jar │
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘
By default, all of the tomatoes will go into the kegs or preserves jar (since the shipping bin has a lower priority), but you won't know which ones will get them first. You can change per-machine settings to set the priority for individual machine types and make them predictable.
Note that if all higher-priority machines are busy, any remaining items may go into lower-priority machines.
A pipeline pushes an item through a multi-step process. For example, milk in the chest gets processed in the cheese presses, then aged in the casks, then shipped:
milk cheese aged
──────────> ──────────> ──────────> shipped
┌──────────┐┌──────────┐┌──────────┐┌──────────┐
│ chest ││ cheese ││ cask ││ shipping │
│ ││ press ││ ││ bin │
└──────────┘├──────────┤├──────────┤└──────────┘
│ cheese ││ cask │
│ press ││ │
└──────────┘└──────────┘
There's two caveats though:
- The machine positions don't decide which will process an item. Every connected machine has direct access to all of the connected chests, the items don't 'flow' across game tiles.
- The shipping bin is lower-priority, but it'll still empty the connected chest if all the other machines are busy.
So there are three common ways to implement a pipeline:
- Simple pipeline with machine priorities
-
If you have enough machines to process every input item, that pipeline will work fine even if there's a shipping bin. The shipping bin will only take items from the chest if every other machine is full. If needed, you can set custom machine priorities to do the same with other machine types.
- Simple pipeline with air gap
-
Another approach is to keep the shipping bin separate from the rest of the machines:
back to chest <───┐ │ milk cheese aged │ ──────────> ──────────> ──────────┘ ┌──────────┐┌──────────┐┌──────────┐ ┌──────────┐ │ chest ││ cheese ││ cask │ │ shipping │ │ ││ press ││ │ │ bin │ └──────────┘├──────────┤├──────────┤ └──────────┘ │ cheese ││ cask │ │ press ││ │ └──────────┘└──────────┘
All the processed items will be put back into the chest when they're done. Occasionally you can manually connect the shipping bin (e.g. using a path connector) to empty out all the processed items.
- Advanced pipeline with Super Hopper
-
Super Hopper is a mod which lets hoppers transfer items from the chest above them to the one below. These are ignored by Automate, so you can use them to create a chain of machine groups. That lets you support any number of input items without sending unprocessed items to the shipping bin or wrong machine.
The trick is:
- Put each machine type is in its own group, not connected to the other machine types.
- Give each group an 'input chest' (which receives items to process) and 'output chest' (which receives items processed by the connected machines). Use Chests Anywhere to set the chests' automation options to "never put items in this chest" and "never take items from this chest" respectively.
- Add a super hopper below the 'output chest' of one group, and the 'input chest' of the next.
Here's the same example using super hoppers:
1. milk turned into cheese ────────────────────────────────────────────────────> ┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐ │ input ││ cheese ││ cheese ││ cheese ││ output │ │ │ chest ││ press ││ press ││ press ││ chest │ │ └──────────┘└──────────┘└──────────┘└──────────┘└──────────┘ │ ┌──────────┐ │ 2. │ super │ │ Super Hopper │ hopper │ │ transfers item └──────────┘ │ to next group ┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐ │ │ │ output ││ cask ││ cask ││ cask ││ input │ v │ │ chest ││ ││ ││ ││ chest │ 4. │ └──────────┘└──────────┘└──────────┘└──────────┘└──────────┘ Super Hopper │ ┌──────────┐ <──────────────────────────────────────────── transfers item │ │ super │ 3. cheese aged to iridum quality to next group │ │ hopper │ │ └──────────┘ │ ┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐ v │ input ││ mini ││ mini ││ mini ││ mini │ │ chest ││ ship bin ││ ship bin ││ ship bin ││ ship bin │ └──────────┘└──────────┘└──────────┘└──────────┘└──────────┘ ────────────────────────────────────────────────────> 5. item shipped
If you have Generic Mod Config Menu installed, you can click the cog button (⚙) on the title screen or the "mod options" button at the bottom of the in-game menu to configure the mod. Hover the cursor over a field for details, or see the next section.
Installing Chests Anywhere lets you set per-chest options directly in-game:
This adds three options for Automate:
- Avoid removing the last item in a stack.
- Whether to put items in this chest. Possible values:
- Put items in this chest (default).
- Put items in this chest first: Automate will push machine output into this chest first, and only try other chests if it's full.
- Never put items in this chest.
- Whether to take items out of this chest. Possible values:
- Take items from this chest (default).
- Take items from this chest first: Automate will take machine input from this chest first, and only try other chests if it doesn't have any input for a machine.
- Never take items from this chest.
(To configure chest automation from another mod, see the technical documentation.)
This is advanced; most players won't need to configure Automate to this extent.
You can set some options for individual machine types by editing the config.json
,
and adding an entry to the MachineOverrides
field. If a machine isn't listed in that field, it'll
use the default values defined in assets/data.json
. This works for all automated machines,
including those added by other mods.
Each entry in MachineOverrides
is identified by the internal machine type ID (not the machine
name you see in-game). You can run the automate summary
command to see a list
of machines being automated; the names shown in the list are the machine type IDs.
For example:
"MachineOverrides": {
"ShippingBin": {
"Enabled": true,
"Priority": -1
},
"Tapper": {
"Enabled": true,
"Priority": 0
},
}
Available options for each machine:
field | purpose |
---|---|
Enabled |
Whether the machine type should be automated (default true ). |
Priority |
The order in which this machine should be processed relative to other machines (default 0 ). Higher values are processed first for both input and output. |
The mod creates a config.json
file in its mod folder the first time you run it. You can open that
file in a text editor to configure the mod.
These are the available settings:
setting | what it affects | ||||||||
---|---|---|---|---|---|---|---|---|---|
Enabled |
Whether Automate features are enabled. If this is |
||||||||
Controls |
The configured controller, keyboard, and mouse buttons (see key bindings).
The default value is You can separate bindings with commas (like |
||||||||
PullGemstonesFromJunimoHuts |
Whether to pull gemstones out of Junimo huts. If true, you won't be able to change Junimo colors by
placing gemstones in their hut. Default |
||||||||
AutomationInterval |
The number of update ticks between each automation cycle (one second is ≈60 ticks). Default |
||||||||
ConnectorNames |
A list of placed item names to treat as connectors which connect adjacent machines together. You must specify the exact English names for any in-game items to use. For example: "ConnectorNames": [
"Wood Path",
"Crystal Path"
] Contains |
||||||||
MachineOverrides |
The configuration to override for specific machine IDs. See per-machine settings for more info. |
||||||||
ModCompatibility |
Enables compatibility with other mods. All values are enabled by default.
|
Automate is compatible with Stardew Valley 1.5+ on Linux/Mac/Windows, both single-player and multiplayer. In multiplayer mode, only the main player can automate machines; other players can keep it installed and use the overlay, their mod just won't automate anything.
Pairs well with...
- Better Junimos adds more crop automation (like replanting) and other improvements. Automate will automaticall ignore seeds/fertilizer in Junimo huts if it's installed.
- Deluxe Grabber Redux makes auto-grabbers collect nearby animal products, forage, crops, and indoor pot crops too.
- Non-Destructive NPCs prevents NPCs from destroying chests and machines.
Press U
in-game (configurable) to toggle the automation overlay. This highlights
machines, containers, and connectors which are automated (green) or automateable but not currently
automated (red):
Enter automate summary
directly in the SMAPI console to view a summary of your machine groups:
Enter automate summary
directly in the SMAPI console to reset all cached data and rescan the
world for machines. Automate normally detects changes automatically, so this isn't usually needed.
There's no strict limit, since Automate optimises machine connections internally. I've officially tested with up to 630 machines in one group (which worked fine). The most I've seen is 21,134 automated machines in one save.
Yes, but some custom machines need a separate mod which tells Automate how they work:
- For Custom Farming Redux machines, install CFAutomate from its optional downloads.
- For Producer Framework Mod machines (including PPJA Artisan Valley), install PFMAutomate.
(For mod authors: you can use the Automate API to add custom machines to Automate.)
Path connectors aren't enabled by default. See the "Enable path connectors (config.json)" download on the mod page's Files tab which enables some for you, or see connectors above for more info.
Once a crystalarium is started, it continues producing the initial gem forever. So you need to start them with the gem you want manually, then Automate will collect their output automatically. (You can check the machine list in the mod description, it has notes about how some machines work.)
A few machines give XP, update player stats, or check player skills based on the player who uses them. Since there's no player when they're automated, Automate uses the machine owner (i.e. who placed or built the machine) if possible, and defaults to the main player if not.1
More specifically:
machine | player effects |
---|---|
bushes | The main player's foraging level and botanist profession applies. |
crab pots | The machine owner's luremaster profession applies, and their caughtFish stat is updated. |
fish ponds | The machine owner gets XP for collected items. |
egg incubators, slime incubators |
The main player's coopmaster profession applies. |
shipping bin | Prices are set by the online player whose professions would most increase it (see multiplayer on the wiki). |
trees | The main player's foraging level applies. |
custom machines | The logic for machines added by other mods is decided by those mods, not Automate. |
1 Due to a bug in the game code, the owner is only tracked correctly for crab pots and fish ponds.
Yep; see in-game settings.
Yep, you can disable it using per-machine settings. More specifically,
replace the "MachineOverrides": {}
line in to your config.json
file with this:
"MachineOverrides": {
"ShippingBin": {
"Enabled": false
}
}
Some common reasons:
- NPCs destroy items placed in their path. You can use Non Destructive NPCs to prevent that, or use path connectors to connect machines away from NPC paths.
- Festivals and the Night Market use temporary maps, so items placed there may disappear when the map is switched back to normal.
Automate doesn't remove placed objects, so it's never at fault for disappearing chests or machines.
When storing items, Automate prefers chests which either have the "Put items in this chest first" option (see in-game settings in the README) or already have an item of the same type. The order when taking items is a bit more complicated. For more info, see the technical documentation.
For machines, see machine priority.
Yep. Automate provides APIs that let other mods add custom machines/containers/connectors or make other changes. For more info, see the technical documentation.