UPDATE April 26: With the most recent update to the stable branch (Enraged Koala update 8), Starfoundry should be fully compatible with both the stable and unstable versions of the game again. Please let us know if you still have issues running Starfoundry with the latest version of the game!
Starfoundry is a comprehensive set of Starbound objects and APIs to automate the movement, production, and storage of materials, liquids, items, energy and data. We also aim to make these systems easy for other mods to implement and extend, providing a foundation for further automation development.
Tutorials
Features
Example showing an automatic quarry setup with pipes, energy, and wires by FormalRiceFarmr
Pipes
The Pipes API allows the transmission of fluid and items via pipes. Pipe tiles come in 7 shapes (horizontal, vertical, junctions, and four orientations of elbows) and can be placed in the background or foreground. When an unbroken pipe (it should visually fit together) connects two valid pipe nodes on devices, items and/or liquids can be sent between devices. You can switch freely between background and foreground pipes, but the system will always try connecting to pipes on the same layer first.
Unlike some pipe systems you may be familiar with (such as buildcraft), pipes in Starfoundry don't actually store items or liquids, and transfers are instantaneous. This can be a bit confusing at first, but it also allows objects to pull items and liquids that they need from other devices within the network. This means that devices which use specific items (such as the power smelter and liquid extractor) will be able to get take those items from any item box that they're connected to.
Another aspect of Starfoundry pipes is that items and liquids are not split between multiple destinations. Instead, they will always prefer the closest valid connection. You can use this to prioritize the flow of items and liquids. Don't forget that since pipes are tiles, the layer swapper can be used to switch connections!
Liquid pipes input and output through pipe spouts. A pump must be connected to a valid source (a liquid tank, extractor, or a pipe spout submerged in liquid) and a valid destination (a liquid tank or a pipe spout) to operate. It can then be activated through interaction or wire input. Pumps require energy to activate. You can create liquids from materials using a liquid extractor.
Item pipes take items in through hoppers and output items through ejectors. Items are often stored in item boxes as buffers and queues, to input to a variety of devices such as the power smelter and the liquid extractor.
Pipe tiles: Used for connecting objects that use pipes.
Pipe Spout: Can suck in liquid that it is emerged in, or output liquid that is pumped out.
Liquid Extractor: Accepts material items through the left pipe input and uses energy to transform them into liquids, which it outputs through the right pipe. Snow, slush, ice, mud, and wet dirt will yield water. Sewage or slime will yield acid, while magma rock or obsidian will yield lava. Tar blocks can also be processed into liquid tar.
Liquid Filler: Puts liquids into portable, throwable capsules. Connect a liquid source to the input pipe and a valid item destination to the output pipe, provide the machine with energy, then activate to begin producing capsules from the closest valid liquid source. Capsules can then be thrown to release the liquid elsewhere.
Pump: Connects to two pipe spouts using pipe tiles. When powered by energy and turned on it will pull liquid from a tank or pipe spout on one side, and push it to a tank, pipe spout or device on the other. The direction of transfer is controlled by the direction the pump faces when it's placed, so to reverse the flow you'll need to pick up the pump and turn it around.
Liquid Tank: Stores liquids that are pumped into it. Can only store one liquid type at a time, and will keep its contents when picked up. There are several ways to get liquids out of a tank. Devices that use liquids will automatically pull them from the tank as needed. To slowly drain the tank you can connect to one of the wire nodes on the sides of the tank and turn it on to open the valve (if there is a valid receiver connected). You can also rapidly drain the tank using a pump.
Liquid Detector Pipe: When liquid goes through this pipe it will output a datawire signal with the liquid amount.
Drain: Rapidly removes liquid (improved from vanilla object). Open (draining) by default, and can be wired to open or close using binary signals.
Watch Demo
Hopper: Picks up items placed on it and send them through the connected pipes (pipe connections are on the bottom). The hopper currently does not store items, so it will spit them out if no valid receiver is connected. If you want to make a 'queue' for items, use the hopper to fill an item box.
Ejector: Drops items it receives through pipes.
Item Storage Box: Will store stacks of items that are put in through pipes. Will push out items to an ejector if turned on with wire. Devices that use items (such as power smelters and liquid extractors) will pull items from the box as needed.
Pipe Chest Adaptor: Place one adjacent to a chest or other storage container to add an item pipe connection to that container. Activating the Pipe Chest Adaptor with a wire signal will push items out of the connected container, allowing any container to function like an Item Storage Box.
Item Filter Pipe: Basic filter pipe which restricts what kinds of items flow through it. The filter has four inventory slots that are used to define the kinds of items it will accept. Only items that match the type (item name, not including color or other data) of one of the items in the filter slots will be allowed to pass through.
Item Sorting Pipe: The big brother of the Item Filter Pipe, this object combines four color-coded filters in one. Place items in the colored area of the inventory corresponding to the direction you want those item types to be sent, and items received from any input direction will be routed accordingly.
Item Detector Pipe: When an item goes through this pipe it will output a datawire signal with the item stack count
Valve Junction: If open, will let through liquid and items in both the horizontal and vertical directions. If closed, will not let any liquid or items through. Unlike the + pipe tile, an open valve will only allow flow directly through (top to bottom and left to right).
Energy
The Energy API allows generation, consumption, and transmission of energy through a network of wireless energy relays. For generators, relays, or devices to connect to each other, they must have a clear line of sight and be within a range of 10 blocks. Energy can flow through the grid when a generator and a device are connected either directly or through an unbroken chain of relays.
Energy can also be stored in batteries when placed inside a battery rack. These batteries will retain their charge when broken and can be stored or transferred to other battery racks.
Combustion Generator: Will pick up nearby fuels and burn them to create energy.
Solar Panel: Generates a very small amount of energy from sunlight.
Thermoelectric Generator: Generates energy using water and lava. Connect a lava source to the generator, then immerse it in a pool of water to begin generating. Lava will be gradually consumed and water will boil away, with faster liquid consumption and faster generation when the entire generator is underwater.
Watch Demo
Relay: Used to build energy paths to the objects requiring energy. Cannot send energy through walls.
Battery: Stores energy for use later. Can be picked up and replaced without losing the energy stored. Must be placed in a Battery Rack for input/output.
Battery Rack: Place up to three batteries into the slots to connect them to the energy network. Interacting with the charger will toggle between Buffer mode (green indicator) and Charge mode (blue indicator). In Buffer mode, energy will be both accepted from and sent to connected devices/relays. In Charge mode, energy will only be accepted, allowing batteries to be topped off.
Power Smelter: Will smelt ores it receives through pipes on the left and output the bars through pipes on the right. Smelts faster than a furnace but uses energy. Best used combined with an item storage box to hold the ores.
Wires
The Data Wire API allows the transmission of arbitrary data types (such as numbers or locations) over wires. In addition to the binary on/off data transmittable in the unmodified game, objects implementing the Wires API have the ability to send and receive any lua datatype.
Most data wire signals are numeric, and can be displayed in-game using linked displays. The counter can be used to select, store, and increment/decrement numbers. Objects like the operator and comparator allow you to perform basic math and decimal logic. Data can also be gathered from the world using a variety of sensors.
We've also added a few assorted buttons and switches for convenience.
Linked Displays: Display numbers in a way you never thought would be possible. The standard way! Place displays horizontally adjacent to each other and they will link up, then connect your input wire to any segment to set the displayed value.
Light Sensor: Outputs light level at the sensor’s location.
Wind Sensor: Outputs wind level at the sensor’s location. This value seems to be 0 except during weather events. I haven't come up with a good use for this yet.
Temperature Sensor: Outputs temperature level at the sensor’s location. This is the base temperature level for the biome and time and is not affected by heat sources.
Liquid Sensor: Outputs liquid type (numeric liquid ID) and binary presence/absence of liquid at the sensor’s location.
1 - Water
2 - Endless Water (Ocean)
3 - Lava
4 - Acid/Poison
5 - Endless Lava
6 - Tentacle Juice
7 - Tar
Entity Scanner: Outputs numeric data about a nearby entity. Interact to toggle between Current HP and Max HP.
Memory Cell: Stores any type of data it receives, and outputs that data continuously. Input and output can be locked with binary signals to control data flow. A binary wire signal on the left (input lock) node will prevent signals from being written to the memory, and a signal to the right (output lock) node will prevent the memory from sending to connected receivers.
Counter: can be incremented, decremented, or reset using binary signals, and outputs a numeric value.
Comparator: Performs logical operations (<, >, ==) on two numeric input values and outputs binary result of the comparison. Also outputs the numeric maximum (for >) and minimum (for <) of the values. Interact to cycle through modes.
Operator: Performs logical operations (+, -, *, /) on two numeric input values and outputs the numeric result. Interact to cycle between modes.
Binarizer: Strips all numeric data from a wire signal and relays only binary. This is only necessary when connecting devices which output both binary and numeric signals (such as operators) to devices which can receive both binary and numeric signals (such as counters).
Wiretap: Takes data input and and send, unaltered, to output. If enabled, writes the passing data to your starbound.log file. This can be useful for debugging data wire objects without needing to modify files.
Quick Wall Button: Just like the Small Wall Button, but sends a shorter signal for quickly incrementing counters or delivering a quick pulse to continuous devices.
Tiny Button: Sends a short “on” pulse on the wire output. Smaller than the small button.
Tiny Switch: Toggles wire output on or off. Smaller than the small switch.
Activator: This object has a target area that can be rotated by interacting with it, and when it receives a wire signal it attempts to 'activate' (interact with) all objects in the target area. unfortunately, this is currently limited to scripted objects, which means it won't work yet for crops and some other interactive object types.
Magnets
The Magnet API allows magnet blocks to interact with magnetized monsters or players using the magnetize tech. Magnetic charges can be positive (red) or negative (blue). Entities and objects with the same charge will be repelled from each other, while those with opposite charges will be attracted to each other.
Magnetize tech: Will turn you into a rollerball of electromagnetism, allowing you to be affected by placed magnets. Use F to activate/deactivate and G to switch between positive and negative charges.
Magnetizer: Turns monsters and NPCs into magnetic freaks, allowing them to be affected by placed magnets. Requires energy to function and will magnetize any monster it touches.
Permanent Positive Magnet: A weak magnet with a constant positive charge.
Permanent Negative Magnet: A weak magnet with a constant negative charge.
Powered Positive Magnet: Uses energy to create a strong positive charge, and can be switched on and off.
Powered Negative Magnet: Uses energy to create a strong positive charge, and can be switched on and off.
Advanced Electomagnet: A strong magnet that can create variable positive or negative charge, using power proportional to the strength. To control the strength and polarity, use a datawire input to set a number between -10 and 10.
Ore Magnet: Unlike other magnets, doesn't influence players or monsters. Instead, this device charges up using large amounts of energy, then emits a magnetic pulse which pulls ores closer through solid blocks. When the device is inactive, the light on the top is off. When the device is active and charging, the light will flash yellow. When the device is fully charged, the light will turn green and the magnetic pulse will be fired, discharging the stored energy. A single ore magnet will require several generators or other power sources to run at maximum frequency. Warning: ore magnets have powerful fields that will interfere with each other, so don't run multiple ore magnets in the same area!
Watch Demo
Entity Manipulation
Starfoundry includes several general-purpose entity manipulators to affect moving objects like players, monsters, and item drops. These objects require energy to function and can be activated and deactivated by interacting with them or by using wire signals.
Gravity Elevator: Used to ascend/descend long distances safely. Place several gravity elevators approximately 5-10 blocks apart in a vertical column. Trigger the elevator by interacting with the bottom pad (to go up) or the top pad (to go down), or by activating the appropriate wire node for the direction you're going. The first pad in the chain requires energy for the system to function.
Jump Pad: Sends entities flying high into the air.
Levitation Pad: Levitates entities at a constant height.
Conveyor Belt: Shifts entities standing on it to the right or left at a constant rate.
Air Fan: Blows away any entity that comes within range.
Tile Manipulation
The Tile Manipulation API provides helper functions for scanning, placing and destroying tiles. Currently, this is only used by a few powerful machines such as the layer swapper and quarry.
Quarry and Quarry Marker: Advanced machine which uses energy to automatically mine blocks in an area. To set up, pick a wide, flat area to excavate. Place a quarry at one edge of the desired area and a quarry marker at the other edge. Make sure the quarry is facing the proper direction to connect to the marker, then press E on the quarry to activate it. If successful, the rest of the quarry will appear and the marker will be returned.
The quarry can then be activated through interaction or a wire signal, and when active will mine continuously until it runs out of energy or encounters an obstacle. Deactivating the quarry will cause the drill head to return, depositing any items collected into connected pipes. Items can also be ejected and collected manually.
Layer Swapper: When switched by interaction or a wire signal, this object will swap tiles between the foreground and background in the specified area. This allows you to create hidden passages, vanishing platforms, doors of any size/shape, switches for energy and pipes, and more! To define the area that will be swapped, use either Freeform Markers or Rectangular Markers (described below).
Freeform Marker: Use these to define an area of any shape and size. Place a marker on each of the tiles you want to include, connect one of the markers to a target Layer Swapper, then activate that marker to save the area. If it's successful the markers will pop off and can be reused.
Rectangular Marker: Use these to define a rectangular area. Place two markers on the diagonal corners of the area, connect one of the markers to a target Layer Swapper, then activate that marker to save the area. If it's successful the markers will pop off and can be reused.
Miscellaneous
Sometimes we come up with other fun things that don't really fit within the main categories, but don't warrant a mod of their own.
Wired Lamps: Simple lights in a variety of colors that can be toggled on and off through interaction or by using a wire signal.
Mannequin: Doll which can be used to display weapons, armor, and clothes. Simply place the mannequin, hold an item in your hand that you want to display, and press E to interact with the mannequin.
Analog Clock: Indicates the current planetary time. Will also output a wire signal during the daytime.
Getting Started
There are two ways to get started using Starfoundry, depending on what kind of game experience you're looking for. If you want to build things using balanced material costs, you can create a Foundry from a crafting table (or similar) and access Starfoundry recipes by category. If you just want to test things out without having to spend resources, you can also create Starfoundry recipes from a Tabula Rasa for free.
Problems? Bugs?
We realize that Starfoundry can be a bit overwhelming and confusing. We'll continue updating the documentation here with better descriptions and more images. In the meantime, if you're having trouble figuring things out, look us up on the Starbound Modding IRC channel (info below).
If you think you've found a bug, or have a suggestion for how we can improve things, please leave a reply in the forum thread or send us a message through the forums. You can also view the current known issues and to-do items on our GitHub issue tracker.
Want to Get Involved?
We’re always open to new collaborators! If you have an idea for something that might fit into the mod, or want help making your own mod using our APIs, come find us on freenode IRC in the ##starbound-modding channel. If you don’t have an IRC client installed, just use this handy web chat link: http://webchat.freenode.net/?channels=##starbound-modding. You can also contact metadept or healthire through this forum if you have any questions.
Want to include Starfoundry in a modpack?
At this time, Starfoundry is in rapid development. Bugfixes and improvements are being released frequently, and tons of new features are on the way. Because of this, we discourage redistributing Starfoundry in a modpack at this time. If there are issues with a released version, we will release hotfixes as soon as possible. If a modpack includes an outdated version of Starfoundry, players may experience bugs or incompatibilities that we have already addressed in the current release, and this leaves us with no direct channel to provide them updates.
That said, we are not opposed to modpacks, and we will work with people who are willing to invest the time in curating a quality modpack. If you would like to include Starfoundry in your modpack, we request that you:
This only applies to modpacks posted as a separate resource on this site. If you just want to pack up mods you use on your server to more easily let people play on it, ignore the requests above. Just do it!
- Obtain permission from the Starfoundry team.
- Link to the Starfoundry mod page at http://community.playstarbound.com/index.php?resources/starfoundry.1302/
- List the version of Starfoundry that you are including in the modpack, and whether or not it is the latest version.
- Update to include new Starfoundry versions within one week of release (unless an older version is required for compatibility reasons).
Contributors
metadept
healthire
SeveredSkullz
XspeedPL
PenguinToast
feryaz
TP_
SnoopJeDi
LowestFormOfWit
Skizot
aMannus
Quatroking
AgentSnazz
Neurisko
HammerGuy
talc
Nirahiel
- Mod Pack Permissions:
- You must get the author's consent before including this mod in a compilation.
- Mod Assets Permissions:
- You must get the author's consent before altering/redistributing any assets included in this mod.
-
Welcome to the official Starbound Mod repository, Guest! Not sure how to install your mods? Check out the installation guide or check out the modding help thread for more guides.Dismiss Notice
Outdated Mods have been moved to their own category! If you update your mod please let a moderator know so we can move it back to the active section.
Outdated Starfoundry v1.3.2
Automation megamod including energy, pipes, magnets, data transmission and more!
Recent Updates
- Announcements, Item Excluder, Bug Fixes Mar 24, 2014
- 1.3.1: Bug Fixes and Improvements Mar 8, 2014
- hotfix for pumps Mar 1, 2014