Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local sides = rs.getSides()
- state = {}
- setmetatable(state, {
- __index = function(t, side)
- local returnTab = {}
- returnTab["rs"] = rs.getInput(side)
- local rp = rs.getBundledInput(side)
- for k, v in pairs(colors) do
- if type(v) == "number" then
- returnTab[k] = colors.test(rp, v)
- end
- end
- return returnTab
- end
- })
- function pullEvent(noTerminate, exclusive, side, wire, val)
- local pullEventFunc
- if noTerminate then pullEventFunc = coroutine.yield else pullEventFunc = os.pullEvent end
- local stateSide
- local toReturn = {}
- local prevState = {}
- local event, param1, param2, param3, param4, param5
- while true do
- for k, v in pairs(sides) do
- prevState[v] = state[v]
- end
- event, param1, param2, param3, param4, param5 = pullEventFunc()
- if event ~= "redstone" then
- if not exclusive then
- return event, param1, param2, param3, param4, param5
- end
- else
- if param1 ~= nil then return event, param1, param2, param3, param4, param5 end
- if not side then
- for k, v in pairs(sides) do
- stateSide = state[v]
- for x, y in pairs(stateSide) do
- if y ~= prevState[v][x] then
- table.insert(toReturn, {v, x, y})
- end
- end
- end
- for i=2, #toReturn do
- os.queueEvent("redstone", toReturn[i][1], toReturn[i][2], toReturn[i][3])
- end
- return "redstone", toReturn[1][1], toReturn[1][2], toReturn[1][3]
- else
- stateSide = state[side]
- if not wire then
- for x, y in pairs(stateSide) do
- if y ~= prevState[side][x] then
- table.insert(toReturn, {side, x, y})
- end
- end
- if #toReturn >= 1 then
- for i=2, #toReturn do
- os.queueEvent("redstone", toReturn[i][1], toReturn[i][2], toReturn[i][3])
- end
- return "redstone", toReturn[1][1], toReturn[1][2], toReturn[1][3]
- end
- else
- if val ~= nil then
- if not stateSide[wire] == prevState[side][wire] and stateSide[wire] == val then
- return "redstone", side, wire, stateSide[wire]
- end
- else
- if not stateSide[wire] == prevState[side][wire] then
- return "redstone", side, wire, stateSide[wire]
- end
- end
- end
- end
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment