Skip to content

Data bus

Need a recipe? Use JEI in game. Need a starting route? Start here

Module: Hard Hoof: Tech (hardhoof_tech)

Data cable is the Serial bus that lets a Terminal reach Tech devices. It carries no power and moves no items — only device calls.

Crafting

Shaped crafting (not the workshop), yields 8:

R R R
W D W
R R R
Symbol Ingredient Count
R Rubber (hardhoof_core:rubber) 6
W Copper wire (hardhoof_core:copper_wire) 2
D Redstone 1

Result: hardhoof_tech:data_cable_1 ×8

Rubber and wire: Rubber, Materials & Components.

Network rules

  • Cables join neighbors into one grid (any data-cable tier joins; T1 cap 256 cables).
  • A cable plugs into a device capability on a neighboring face, or into any Terminal face except the screen.
  • Devices can also sit against a Terminal face directly (again not the screen) without a cable hop.
  • The Terminal's bus is: its built-in computer device, every adjacent device, plus every device plugged into any data-cable network touching those faces.

Factories design text mentions a later “1 host / 8 devices” Serial story. Current code does not enforce an 8-device cap — omit that limit in play; the hard limit that exists today is the 256-cable grid size.

Player-facing ABI

From Volt on the Terminal (/rom/doc/api.txt):

Call Meaning
dev.list() {id, kind, label} for every reachable device
dev.find("kind") First device of that kind, or null
dev.open(ref) Handle by id, name, or kind
dev.ops(h) Declared operations
dev.call(h, "op", …) Run an op (waits a tick)
dev.rename(h, "name") Name Tag equivalent from software

Shell: dev, dev <device>, dev <device> <op> …. Refusals are ordinary Volt errors (try / catch).

Device kinds used by Batch 3 machines include electric_furnace, item_controller, assembler, water_pump, boiler, and steam_turbine. Each machine article lists its ops. Newer kinds include internet (the Internet Dish) and implant (a Neural Link). The Devices app lists every kind a computer reaches and its ops.

Two additions to the calls above (since 0.6.0): dev.watch(h) and dev.unwatch(h) make a program wake with a {type: "device", what: "changed"} event when a device changes, instead of polling. And a device in a chunk that is not loaded stays in dev.list but a call to it fails with offline: <label> is not loaded.

The Internet Dish on the bus (development build)

The Internet Dish is a bus device of kind internet. Put it against a computer or on its data cable and every computer that reaches it can fetch real web pages; the Browser, web and fetch all use it, and remote access from Hard Hoof Studio needs one on the computer's bus. It draws 2 W on while on and 8 W while it fetches, as DC power on its underside, not from the data cable. See The web & remote access.

A data network keeps working while part of its cable is in unloaded chunks: messages cross it, including between two loaded computers whose cable runs through unloaded ground. Reading a network never loads a chunk.

Network Probe

Item: Network Probe (hardhoof_tech:network_probe). Right-click a Terminal, data cable, item pipe, controller, or device to print names/ids into chat with click-to-copy. Useful while writing routes and dev.call lines.

First example

  1. Craft data cable; run it from a Terminal side (not the screen) to an Electric Furnace / Item Controller.
  2. Power the machine on copper wire as usual — data cable will not energize it.
  3. On the Terminal: dev.list(), then dev.call(dev.open("electric_furnace"), "status") (or the device's name).

Common failures

  • Device missing from dev.list: plugged into the screen face, different cable island, unloaded chunk, or not a Device.
  • Machine has data but will not work: still needs electricity (or steam) on its power rules.
  • Confused with item/fluid pipes: three separate networks; colors and shapes differ.
↑↓ move↵ openesc close