Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ###############################
- -- h2peripheral API
- -- version 0.2b
- -- http://hevohevo.hatenablog.com/
- -- Write in your program.
- -- os.loadAPI("h2peripheral")
- -- os.loadAPI("rom/apis/peripheral")
- if peripheral and os then
- local types = { -- White-list
- drive="Disk Drive",
- monitor="Monitor and Advanced Monitor",
- advanced_monitor="Advanced Monitor",
- modem="Wired Modem and Wireless Modem",
- wireless_modem="Wireless Modem",
- workbench="Crafty Turtle's Workbench",
- printer="Printer",
- command="Command Block"
- }
- function getAllTypeNames()
- return types
- end
- function isAdvancedMonitor(side)
- return peripheral.getType(side)=="monitor" and peripheral.call(side, "isColor")
- end
- function isWirelessModem(side)
- return peripheral.getType(side)=="modem" and peripheral.call(side, "isWireless")
- end
- function getType(side)
- local name = peripheral.getType(side)
- local correct_name = name
- if isAdvancedMonitor(side) then correct_name = "advanced_monitor" end
- if isWirelessModem(side) then correct_name = "wireless_modem" end
- return name, correct_name
- end
- function wrapByName(str)
- if not types[str] then return false end -- check with White-list
- local results = {}
- for _,side in pairs(peripheral.getNames()) do -- search valid sides
- local type_name, correct_type_name = getType(side)
- if str == type_name or str == correct_type_name then
- local wrapped = peripheral.wrap(side)
- wrapped.getType = function() return type_name, correct_type_name end
- wrapped.getSide = function() return side end
- table.insert(results, wrapped)
- else
- -- do nothing
- end
- end
- return unpack(results)
- end
- function wrap(str) -- selector
- local results = {}
- if types[str] then -- types
- results = {wrapByName(str)}
- else -- sides and the others
- local result = peripheral.wrap(str)
- if result then
- result.getType = function() return getType(str) end
- result.getSide = function() return str end
- results = {result}
- end
- end
- return unpack(results)
- end
- find = wrap
- function waitForDetection(str)
- local results = {}
- repeat
- results = {wrap(str)}
- if #results == 0 then os.pullEvent("peripheral") end
- until #results >0
- return unpack(results)
- end
- end
- --[[
- print('Now waiting...')
- local tmp1 = waitForDetection("wireless_modem")
- print('ok.')
- for k,v in pairs(tmp1) do
- print(k,' = ',v)
- end
- --]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement