Flaghacker

enderStaller

May 13th, 2014
366
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.69 KB | None | 0 0
  1. --[[Settings]]--
  2. enderCeiver = "NQ3dvfFi"
  3. enderSender = "Ud31mJ72"
  4.  
  5. --[[Variables & peripherals]]--
  6. local width, height = term.getSize()
  7. local list = {"Install enderSender", "Install enderCeiver", "Quit"}
  8.  
  9. --[[Functions]]--
  10. local function round(number)
  11.     return math.floor(number + 0.5)
  12. end
  13.  
  14. local function spaces(number)
  15.     for i = 1, number do
  16.         write(" ")
  17.     end
  18. end
  19.  
  20. function menu(list, selector)
  21.     local selector = selector or {"[", "]"}
  22.     local longestItem = 0
  23.     local width, height = term.getSize()
  24.     for i, item in pairs(list) do
  25.         if #item > longestItem then
  26.             longestItem = #item
  27.         end
  28.     end
  29.     local selected = 1
  30.     local startX = round((width / 2) - (longestItem / 2)) - 2
  31.     local startY = round((height / 2) - (#list / 2))
  32.     for i, j in pairs(list) do
  33.         if #j > longestItem then
  34.             longestItem = #j
  35.         end
  36.     end
  37.     local running = true
  38.     while running do
  39.         curX = startX
  40.         curY = startY
  41.         for i, item in pairs(list) do
  42.             term.setCursorPos(curX, curY)
  43.             if i == selected then
  44.                 write(selector[1].." "..item)
  45.                 spaces(longestItem - #item + 1)
  46.                 write(selector[2])
  47.             else
  48.                 spaces(2)
  49.                 write(item)
  50.                 spaces(longestItem - #item + 2)
  51.             end
  52.             curY = curY + 1
  53.         end
  54.         event, key = os.pullEvent("key")
  55.         if key == keys.up and selected > 1 then
  56.             selected =  selected - 1
  57.         elseif key == keys.down and selected < #list then
  58.             selected =  selected + 1
  59.         elseif key == keys.enter then
  60.             return list[selected]
  61.         elseif key == keys.q then
  62.             return "quit"
  63.         end
  64.     end
  65. end
  66.  
  67. local function modifyStartup(programName, redstoneSide, chestSide)
  68.     if fs.exists("startup") then
  69.         print("Backing up old startup file to /backupStartup...")
  70.         fs.delete("backupStartup")
  71.         fs.copy("startup", "backupStartup")
  72.     end
  73.     print('"Creating new startup file to run file "'..programName..'"')
  74.     startup = fs.open("startup", "w")
  75.     startup.writeLine("shell.run('"..programName.." "..redstoneSide.." "..chestSide.."')")
  76.     startup.close()
  77. end
  78.  
  79. function askSettings()
  80.     print("Redstone side:")
  81.     redstoneSide = read()
  82.     print("Ender chest side:")
  83.     chestSide = read()
  84.     return redstoneSide, chestSide
  85. end
  86.  
  87. --[[Main program]]--
  88. shell.run("clear")
  89. option = menu(list)
  90. shell.run("clear")
  91.  
  92. if option == list[1] then
  93.     if fs.exists("enderSender") then
  94.         print("Deleting old enderSender file...")
  95.         fs.delete("enderSender")
  96.     end
  97.     shell.run("pastebin get "..enderSender.." enderSender")
  98.     modifyStartup("enderSender", askSettings())
  99. elseif option == list[2] then
  100.     if fs.exists("enderCeiver") then
  101.         print("Deleting old enderCeiver file...")
  102.         fs.delete("enderCeiver")
  103.     end
  104.     shell.run("pastebin get "..enderCeiver.." enderCeiver")
  105.     modifyStartup("enderCeiver", askSettings())
  106. end
  107.  
  108. os.reboot()
Advertisement
Add Comment
Please, Sign In to add comment