Redstone (event)

From ComputerCraft Wiki
Jump to: navigation, search



Grid Modem.png  Event redstone
Fired when any Redstone inputs change on any of the sides of the computer.
Returned Object 1 Nothing

Basic Usage

Grid paper.png  Example
Alerts via console output when a redstone input changes.
Code
while true do
  local event = os.pullEvent("redstone")
  print("Redstone input changed.")
end
Output This will tell one when the redstone event is triggered. Note that this doesn't tell you the side of the event.


Application

Grid paper.png  Example
This program will store the values of each redstone signal on load, and on each state change. It will further display on the screen which state was changed.
Code
-- Set up a list which contains the sides as keys, and the current redstone state of each side as a boolean value
local statelist = {
  ["top"] = rs.getInput("top"),
  ["front"] = rs.getInput("front"),
  ["left"] = rs.getInput("left"),
  ["right"] = rs.getInput("right"),
  ["back"] = rs.getInput("back"),
  ["bottom"] = rs.getInput("bottom"),
}

-- Ready the terminal for printing to
term.clear()
term.setCursorPos(1,1)

while true do -- Start an endless loop
  os.pullEvent("redstone") -- Yield the computer until some redstone changes
  -- We don't care what the event returns, since the first variable will be "redstone" and the rest will be nil. 

  -- Now we check each side to see if it's changed.
  for side, state in pairs(statelist) do -- Run the lines of code in this loop for each key/value pair in statelist
    if rs.getInput(side) ~= state then -- If the side we're checking doesn't match what it was last time we checked then
      print(side.." is now "..tostring(rs.getInput(side))) -- Print the new state of the side.
      statelist[side] = rs.getInput(side) -- Update the statelist with the new change
    end
  end
end