Create_ElevatorPulley
An elevator pulley — Create's smart-floor lift. Drives a cabin between
floor contacts placed in a column; motion is target-driven (sqrt-decel
convergence to currentTarget), not gearshift-driven.
Lua control mirrors the player's options:
- Right-click empty hand on the pulley →
assemble/disassemble. - Pulse a floor contact (or click an in-cabin Contraption Controls
widget) →
setTargetFloor.
Floor identity is owned by the contact peripherals. Use
getFloors to enumerate them, or pair with
Create_ElevatorContact peripherals on the same column.
| isAssembled() | Check whether the pulley has assembled a cabin. |
|---|---|
| assemble() | Assemble the pulley's cabin. |
| disassemble() | Disassemble the pulley's cabin. |
| getOffset() | Get the cable's current extension distance, in blocks. |
| getMaxLength() | Get the maximum extension this pulley can reach, in blocks. |
| getCurrentY() | Get the cabin's current world Y coordinate. |
| getMovementSpeed() | Get the cabin's current movement speed in blocks per tick. |
| isArrived() | Check whether the cabin has arrived at its current target floor (within the elevator's tolerance, ~0. |
| getColumnId() | Get the opaque id of this cabin's column, or nil when unassembled. |
| getCurrentTargetY() | Get the Y level the cabin is currently heading to, or nil when no target is selected (e. |
| getFloors() | Get the list of floors on this cabin's column, ordered bottom-to-top. |
| getCurrentFloor() | Get the floor the cabin is currently parked at, or nil if the cabin isn't currently arrived at any known floor (in trans... |
| getColumnContacts() | Get every contact on this cabin's column with its current state. |
| stop() | Halt the cabin at its current Y (sets the target to the current position). |
| setTargetY(y) | Send the cabin to a free-form Y level, regardless of whether a floor contact exists there. |
| setTargetFloor(y) | Send the cabin to the floor at the given world Y. |
| getLastAssemblyError() | Get the last assembly error message, or nil if the last attempt succeeded or no attempt has been made. |
| getSelfId() | Get this block's id. |
| getSourceId() | Get the id of the block immediately driving this one, or nil if this block has no source. |
| getSubnetworkAnchorId() | Get the id of this block's speed-zone anchor — the gearshift / clutch / speed controller / generator that defines the start of this speed zone. |
| getNetworkId() | Get the id of this block's kinetic network. |
| getKind() | Get this block's role on the kinetic graph: one of "generator", "split_shaft", "consumer", or "passthrough". |
| getSpeed() | Get the local rotational speed at this block. |
| hasSource() | Check whether this block is connected to a kinetic source. |
| isOverstressed() | Check whether the block's network is overstressed. |
| getStressImpact() | Get the stress impact of this block on its network — how much stress it draws while running. |
| getStressContribution() | Get this block's contribution to its network's stress capacity. |
- isAssembled()Source
Check whether the pulley has assembled a cabin.
Returns
booleanTrue if running.
- assemble()Source
Assemble the pulley's cabin. Equivalent to a player right-clicking the pulley with an empty hand while it's stopped. No-op if already assembled.
- disassemble()Source
Disassemble the pulley's cabin.
- getOffset()Source
Get the cable's current extension distance, in blocks. 0 = cabin at the pulley's level; positive = extended downward.
Returns
numberThe current offset in blocks.
- getMaxLength()Source
Get the maximum extension this pulley can reach, in blocks.
Returns
numberThe maximum extension.
- getCurrentY()Source
Get the cabin's current world Y coordinate.
Returns
numberThe platform's world Y.
- getMovementSpeed()Source
Get the cabin's current movement speed in blocks per tick. Signed: positive descending, negative ascending, 0 stopped.
Returns
numberThe movement speed.
- isArrived()Source
Check whether the cabin has arrived at its current target floor (within the elevator's tolerance, ~0.5 blocks).
Returns
booleanTrue if arrived.
- getColumnId()Source
Get the opaque id of this cabin's column, or nil when unassembled. Matches
Create_ElevatorContact.getColumnId()on every contact on the same column — equality-comparable for cross-peripheral grouping. Column resolution touches server-thread-only state.Returns
stringThe column id, or nil.
- getCurrentTargetY()Source
Get the Y level the cabin is currently heading to, or nil when no target is selected (e.g. just-assembled and idle, or unassembled).
Returns
numberThe target Y, or nil.
- getFloors()Source
Get the list of floors on this cabin's column, ordered bottom-to-top. Each entry is a table
{y, short_name, long_name}. Returns nil when unassembled.Returns
- { { [
string] =any}... } A list of floor tables, or nil.
- { { [
- getCurrentFloor()Source
Get the floor the cabin is currently parked at, or nil if the cabin isn't currently arrived at any known floor (in transit, parked between floors via
setTargetY, or unassembled).Same shape as one entry of
getFloors:{y, short_name, long_name}.Returns
- { [
string] =any} The current floor table, or nil.
- { [
- getColumnContacts()Source
Get every contact on this cabin's column with its current state.
Each entry is a table:
y: contact's Yshort_name,long_name: floor namescalling: this contact is the column's selected targetpowering: cabin is at this floor right nowdoor_mode: contact's door mode (e.g.all,north, ...)
Returns nil when unassembled or the column is unavailable.
Returns
- { { [
string] =any}... } A list of contact tables, or nil.
- stop()Source
Halt the cabin at its current Y (sets the target to the current position). The cabin decelerates smoothly and parks. Equivalent to
setTargetYwithgetCurrentY; convenience.- setTargetY(y)Source
Send the cabin to a free-form Y level, regardless of whether a floor contact exists there.
The cabin physically moves to that Y using the same target-driven motion the contact system uses. Differences vs.
setTargetFloor:- No floor contact gets
CALLING(no button "lights up"). POWERINGon arrival fires only if a contact happens to be at the destination Y — door logic triggers accordingly.
Bounded to the cabin's reachable range (
minContactY .. maxContactY); throwsLuaExceptionif outside.Parameters
- y
numberThe destination Y coordinate.
- No floor contact gets
- setTargetFloor(y)Source
Send the cabin to the floor at the given world Y. Equivalent to a redstone pulse on that floor's contact, or a player using an in-cabin Contraption Controls UI to pick the floor.
Parameters
- y
numberThe destination floor's Y coordinate.
- y
- getLastAssemblyError()Source
Get the last assembly error message, or nil if the last attempt succeeded or no attempt has been made.
Returns
stringThe error message, or nil.
- getSelfId()Source
Get this block's id. Other peripherals'
getSourceIdorgetSubnetworkAnchorIdreturn this same id when they refer to this block.Returns
stringThe block's id.
- getSourceId()Source
Get the id of the block immediately driving this one, or nil if this block has no source.
Returns
stringThe parent's id, or nil.
- getSubnetworkAnchorId()Source
Get the id of this block's speed-zone anchor — the gearshift / clutch / speed controller / generator that defines the start of this speed zone. Two blocks share an anchor iff they're in the same speed zone. A generator or split-shaft returns its own
getSelfId.Returns
stringThe anchor block's id, or nil.
- getNetworkId()Source
Get the id of this block's kinetic network. Same value for every block on the same network regardless of how many speed zones lie between them. Nil if this block isn't on a network.
Returns
stringThe network id, or nil.
- getKind()Source
Get this block's role on the kinetic graph: one of
"generator","split_shaft","consumer", or"passthrough".Returns
stringThe role string.
- getSpeed()Source
Get the local rotational speed at this block. Signed; same value across a speed zone, changes across a split-shaft.
Returns
numberThe local speed.
- hasSource()Source
Check whether this block is connected to a kinetic source.
Returns
booleanTrue if a source is connected.
- isOverstressed()Source
Check whether the block's network is overstressed.
Returns
booleanTrue if overstressed.
- getStressImpact()Source
Get the stress impact of this block on its network — how much stress it draws while running. Speed-dependent; zero for sources and pure conduit blocks. Matches the "Stress Impact" value shown by goggles.
Returns
numberThe stress impact.
- getStressContribution()Source
Get this block's contribution to its network's stress capacity. Non-zero for sources only. Parallel to
getStressImpact(per-block draw) and distinct fromCreate_Stressometer#getStressCapacity, which reports the network total.Returns
numberThe per-block stress contribution.