zootsuitman

Hungry Boi

Apr 17th, 2019
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. redstone.setOutput('back', true)
  2. sensor = peripheral.wrap('left')
  3.  
  4. x = 2
  5. y = 3
  6. z = -1
  7. keyItem = "Pharros' Lock Stone"
  8. openTime = 5
  9.  
  10. function getPlayers()
  11. local players = sensor.getPlayers()
  12. local names = {}
  13. for _,player in pairs(players) do
  14. table.insert(names, player.name)
  15. end
  16. return names
  17. end
  18.  
  19. function getDataForPlayer(name)
  20. local success, player = pcall(sensor.getPlayerByName, name)
  21. if success then return player.all().living else return nil end
  22. end
  23.  
  24. function verifyIsLooking(data)
  25. if data.lookingAt == nil then return false end
  26. local pos = data.lookingAt.position
  27. return pos.x == x and pos.y == y and pos.z == z
  28. end
  29.  
  30. function verifyKeyItem(data)
  31. local item = data.heldItem
  32. if item == nil then return false end
  33.  
  34. return item.display_name == keyItem
  35. end
  36.  
  37. function openDoor()
  38. redstone.setOutput('back', false)
  39. sleep(openTime)
  40. redstone.setOutput('back', true)
  41. end
  42.  
  43. while true do
  44. local names = getPlayers()
  45. if (#names > 0) then
  46. for _,name in pairs(names) do
  47. local data = getDataForPlayer(name)
  48. if data ~= nil then
  49. local shouldOpen = verifyIsLooking(data) and verifyKeyItem(data)
  50. if shouldOpen then openDoor() end
  51. end
  52. end
  53. sleep(.5)
  54. else
  55. sleep(1)
  56. end
  57. end
Advertisement
Add Comment
Please, Sign In to add comment