Skip to content

Pipe

One physical pipe piece. Returned by: list_pipes() / get_pipe(pipe_id)

MethodReturnsMeaning
.idstringUnique pipe identifier
.start() / .end()Position or NoneGeometric endpoints of this piece (construction geometry, not flow direction)
.type()stringHardware medium: "gas" or "liquid"
.contents()string or NoneThe one exact fluid established by complete player connections reaching this component; None when no complete connection exists or multiple substances conflict. Activity, power, throttle, flow, and headroom do not change this identity
.conflicting_contents()list of stringsSorted exact substances when more than one complete connection uses this component; non-empty means flow is halted
.connections()list of dictsDiagnostic machine-port claims: machine_id, port, direction, fluid, and a representative pipe_id (players never connect to pipe ids directly)
.incompatible_sinks()list of stringsDirectly connected consumers that cannot accept contents(); they receive nothing while compatible branches keep flowing
.is_complete()booleanTrue once the Constructor finished laying it and flow can run
.length()numberTotal meters across every H/V segment
.laying_head()[x, y] or NoneCurrent laying-head coordinates while incomplete
.flow_rate()numbert/h currently moving; 0 while incomplete, stalled, source-empty, or conflicted
.state()string"flowing" / "stalled" / "incomplete" / "no_source" / "conflict"