Advertisement
DomMOW

BuildRoomInput

Jan 12th, 2021 (edited)
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 11.24 KB | None | 0 0
  1. --Min is 3 for H--
  2. lengthMax = 50
  3. widthMax = 3
  4. heightMax = 3
  5. orientation = 4
  6. --N=4, E=3, S=2, W=1--
  7. orientations = {"north", "east", "south", "west"}
  8. startDirection = orientation
  9.  
  10. xCurrent = 0
  11. zCurrent = 0
  12. yCurrent = 0
  13.  
  14. xHome = 0
  15. zHome = 0
  16. yHome = 0
  17.  
  18. xBlackcurrant = 0
  19. zBlackcurrant = 0
  20. yBlackcurrant = 0
  21. orientationLast = orientation
  22.  
  23. zDiff = {-1, 0, 1, 0}
  24. xDiff = {0, 1, 0 ,-1}
  25.  
  26. turn = 1
  27. turnLast = turn
  28. lengthCurrent = lengthMax
  29. placeTorch = 10
  30. width = widthMax
  31. finishWalk = widthMax
  32. heightCheck = heightMax
  33. heightMax = heightMax - 3
  34. height = heightMax
  35. ending = false
  36. kill = false
  37. said = false
  38. selectedSlot = 16
  39. answer = "F"
  40. facingAnswer = 0
  41. torchesGoCheck = "Pickles"
  42. startUpComplete = false
  43. saidYes = "Rainbows"
  44. hasTorch = false
  45. lengthSet = 0
  46. widthSet = 0
  47. heightSet = 0
  48.  
  49. function fillFacing()
  50.     print("Fill in which way I'm facing: ")
  51.     print("N=4, E=3, S=2, W=1")
  52.     facingAnswer = tonumber(read())
  53.     while not(facingAnswer == 1 or facingAnswer == 2 or facingAnswer == 3 or facingAnswer == 4) do
  54.         print("ERROR! Please try again!")
  55.         print("Fill in which way I'm facing: ")
  56.         print("N=4, E=3, S=2, W=1")
  57.         facingAnswer = tonumber(read())
  58.     end
  59.     orientation = facingAnswer
  60.     startDirection = orientation
  61.     orientationLast = orientation
  62.     shell.run("clear")
  63. end
  64.  
  65. function answerWrong()
  66.     print("ERROR! Please try again!")
  67.     print("Do you want to fill in the dimensions? Type: 'Y' or 'N'")
  68.     print("If 'N' then I will use the Default")
  69.     print("Default: (L: " .. lengthMax .. ", W: " .. widthMax .. ", H: " .. heightCheck .. ")")
  70.     answer = read()
  71.     shell.run("clear")
  72. end
  73.  
  74. function runStartup()
  75.     if startUpComplete == false then
  76.         shell.run("clear")
  77.         print("I'm going to build you a room, Master.")
  78.         print(" ")
  79.         print("Do you want to fill in the dimensions? Type: 'Y' or 'N'")
  80.         print("If 'N' then I will use the Default")
  81.         print("Default: (L: " .. lengthMax .. ", W: " .. widthMax .. ", H: " .. heightCheck .. ")")
  82.         answer = read()
  83.         while not(answer == "Y" or answer == "N") do
  84.             print("ERROR! Please try again!")
  85.             print("Do you want to fill in the dimensions? Type: 'Y' or 'N'")
  86.             print("If 'N' then I will use the Default")
  87.             print("Default: (L: " .. lengthMax .. ", W: " .. widthMax .. ", H: " .. heightCheck .. ")")
  88.             answer = read()
  89.             shell.run("clear")
  90.         end
  91.         if answer == "N" then
  92.             fillFacing()
  93.             heightMax = heightMax + 3
  94.             heightCheck = heightMax
  95.             heightMax = heightMax - 3
  96.             height = heightMax
  97.             startUpComplete = true
  98.         elseif answer == "Y" then
  99.             shell.run("clear")
  100.             print("Please Fill the Dimensions!")
  101.             print(" ")
  102.             print("Fill in the Length:")
  103.             lengthSet = tonumber(read())
  104.             lengthMax = lengthSet
  105.             lengthCurrent = lengthMax
  106.             while lengthSet == nil do
  107.                 print("ERROR! Please try again!")
  108.                 print("Fill in the Length:")
  109.                 lengthSet = tonumber(read())
  110.                 lengthMax = lengthSet
  111.                 lengthCurrent = lengthMax
  112.                 shell.run("clear")
  113.             end
  114.             shell.run("clear")
  115.             print("Please Fill the Dimensions!")
  116.             print(" ")
  117.             print("Fill in the Width:")
  118.             widthSet = tonumber(read())
  119.             widthMax = widthSet
  120.             width = widthMax
  121.             while widthSet == nil do
  122.                 print("ERROR! Please try again!")
  123.                 print("Fill in the Width:")
  124.                 widthSet = tonumber(read())
  125.                 widthMax = widthSet
  126.                 width = widthMax
  127.                 shell.run("clear")
  128.             end
  129.             shell.run("clear")
  130.             print("Please Fill the Dimensions!")
  131.             print(" ")
  132.             print("Fill in the Height:")
  133.             heightSet = tonumber(read())
  134.             heightMax = heightSet
  135.             heightCheck = heightMax
  136.             heightMax = heightMax - 3
  137.             height = heightMax
  138.             while heightSet == nil or heightSet < 3 do
  139.                 print("ERROR! Please try again!")
  140.                 print("Fill in the Height:")
  141.                 heightSet = tonumber(read())
  142.                 heightMax = heightSet
  143.                 heightCheck = heightMax
  144.                 heightMax = heightMax - 3
  145.                 height = heightMax
  146.                 shell.run("clear")
  147.             end
  148.             shell.run("clear")
  149.             fillFacing()
  150.             shell.run("clear")
  151.             print("I will now start, Master.")
  152.             print(" ")
  153.             startUpComplete = true
  154.         end
  155.     end
  156. end
  157.  
  158. function torchGo()
  159.     while not(torchesGoCheck == "Go") do
  160.         print("ERROR! Please try Again")
  161.         print("Once I have Torches Type: 'Go'")
  162.         torchesGoCheck = read()
  163.         shell.run("clear")
  164.     end
  165. end
  166.  
  167. function torchAdded()
  168.     while not(saidYes == "Y") do
  169.         shell.run("clear")
  170.         print("ERROR! Please try Again")
  171.         print("Once I have Torches, Type: 'Y'")
  172.         saidYes = read()
  173.     end
  174. end
  175.  
  176. function saidCheck()
  177.     shell.run("clear")
  178.     print("I need Torches in Slot.1, Master.")
  179.     print("Once I have Torches Type: 'Y'")
  180.     saidYes = read()
  181.     torchAdded()
  182. end
  183.  
  184. function torchCheck()
  185.     while not(turtle.getItemDetail("minecraft:torch")) do
  186.         if said == false then
  187.             saidCheck()
  188.             hasTorch = true
  189.         end
  190.     end
  191.     if hasTorch == true then
  192.         shell.run("clear")
  193.         print("I'm Ready, Master. Type: 'Go' to Start")
  194.         torchesGoCheck = read()
  195.         torchGo()
  196.     end
  197.     shell.run("clear")
  198.     hasTorch = false
  199.     said = false
  200. end
  201.  
  202. function left()
  203.   orientation = orientation - 1
  204.   orientation = (orientation - 1) % 4
  205.   orientation = orientation + 1
  206.  
  207.   turtle.turnLeft()
  208. end
  209.  
  210. function right()
  211.   orientation = orientation - 1
  212.   orientation = (orientation + 1) % 4
  213.   orientation = orientation + 1
  214.  
  215.   turtle.turnRight()
  216. end
  217.  
  218. function look(direction)
  219.     while direction ~= orientations[orientation] do
  220.       right()
  221.     end
  222. end
  223.  
  224. function moveForward()
  225.   while turtle.detect() do
  226.     turtle.dig()
  227.   end
  228.   moved = false
  229.   while not(moved) do
  230.     moved = turtle.forward()
  231.   end
  232.   xCurrent = xCurrent + xDiff[orientation]
  233.   zCurrent = zCurrent + zDiff[orientation]
  234. end
  235.  
  236. function digForward()
  237.   while turtle.detect() do
  238.     turtle.dig()
  239.   end
  240. end
  241.  
  242. function digBelow()
  243.   while turtle.detectDown() do
  244.     turtle.digDown()
  245.   end
  246. end
  247.  
  248. function digAbove()
  249.   while turtle.detectUp() do
  250.     turtle.digUp()
  251.   end
  252. end
  253.  
  254. function moveUp()
  255.   turtle.digUp()
  256.   moved = false
  257.   while not(moved) do
  258.     digAbove()
  259.     moved = turtle.up()
  260.   end
  261.   yCurrent = yCurrent + 1
  262. end
  263.  
  264. function moveDown()
  265.   turtle.digDown()
  266.   moved = false
  267.   while not(moved) do
  268.     moved = turtle.down()
  269.   end
  270.   yCurrent = yCurrent - 1
  271. end
  272.  
  273. function goDown()
  274.   moved = false
  275.   while not(moved) do
  276.     turtle.digDown()  
  277.     moved = turtle.down()
  278.   end
  279.   yCurrent = yCurrent - 1
  280. end
  281.  
  282. function goUp()
  283.     moved = false
  284.     while not(moved) do
  285.         digAbove()
  286.       moved = turtle.up()
  287.     end
  288.     yCurrent = yCurrent + 1
  289. end
  290.  
  291. function upBreak()
  292.   digAbove()
  293.   goUp()
  294.   digAbove()
  295. end
  296.  
  297. function leftDig()
  298.   left()
  299.   moveForward()
  300.   digAbove()
  301.   digBelow()
  302.   while height > 0 do
  303.     upBreak()
  304.     height = height - 1
  305.   end
  306.   height = heightMax
  307.   while height > 0 do
  308.     moveDown()
  309.     height = height - 1
  310.   end
  311.   height = heightMax
  312.   left()
  313. end
  314.  
  315. function rightDig()
  316.   right()
  317.   moveForward()
  318.   digAbove()
  319.   digBelow()
  320.   while height > 0 do
  321.     upBreak()
  322.     height = height - 1
  323.   end
  324.   height = heightMax
  325.   while height > 0 do
  326.     moveDown()
  327.     height = height - 1
  328.   end
  329.   height = heightMax
  330.   right()
  331. end
  332.  
  333. function leftWalk()
  334.   left()
  335.   moveForward()
  336.   digAbove()
  337.   digBelow()
  338.   while height > 0 do
  339.     upBreak()
  340.     height = height - 1
  341.   end
  342.   height = heightMax
  343.   while height > 0 do
  344.     moveDown()
  345.     height = height - 1
  346.   end
  347.   height = heightMax
  348. end
  349.    
  350. function rightWalk()
  351.   right()
  352.   moveForward()
  353.   digAbove()
  354.   digBelow()
  355.   while height > 0 do
  356.     upBreak()
  357.     height = height - 1
  358.   end
  359.   height = heightMax
  360.   while height > 0 do
  361.     moveDown()
  362.     height = height - 1
  363.   end
  364.   height = heightMax
  365. end
  366.  
  367. function goto(xHome, zHome, yHome)
  368.     while yHome < yCurrent do
  369.         moveDown()
  370.     end
  371.     while yHome > yCurrent do
  372.         moveUp()
  373.     end
  374.     if xHome < xCurrent then
  375.       look("west")
  376.       while xHome < xCurrent do
  377.         moveForward()
  378.       end
  379.     end
  380.     if xHome > xCurrent then
  381.       look("east")
  382.       while xHome > xCurrent do
  383.         moveForward()
  384.       end
  385.     end
  386.     if zHome < zCurrent then
  387.       look("north")
  388.       while zHome < zCurrent do
  389.         moveForward()
  390.       end
  391.     end
  392.     if zHome > zCurrent then
  393.       look("south")
  394.       while zHome > zCurrent do
  395.         moveForward()
  396.       end
  397.     end
  398.     while not(orientation == startDirection) do
  399.         right()
  400.     end
  401. end
  402.  
  403. function dropItems()
  404.     turtle.select(16)
  405.     selectedSlot = 16
  406.     while not(selectedSlot == 1) do
  407.         turtle.drop()
  408.         selectedSlot = selectedSlot - 1
  409.         turtle.select(selectedSlot)
  410.     end
  411. end
  412.  
  413. function lookLast()
  414.     while not(orientation == orientationLast) do
  415.         right()
  416.     end
  417. end
  418.  
  419. function dropOff()
  420.     xBlackcurrant = xCurrent
  421.     zBlackcurrant = zCurrent
  422.     yBlackcurrant = yCurrent
  423.     orientationLast = orientation
  424.     turtle.select(16)
  425.     if turtle.getItemCount() > 0 then
  426.         print("Going to Drop Off")
  427.         goto(xHome, zHome, yHome)
  428.         dropItems()
  429.         goto(xBlackcurrant, zBlackcurrant, yBlackcurrant)
  430.         lookLast()
  431.     elseif turtle.getItemCount() == 0 then
  432.         turtle.select(1)
  433.     end
  434. end
  435.  
  436. while true do
  437.   if lengthCurrent > 0 and ending == false then
  438.     runStartup()
  439.     dropOff()
  440.     torchCheck()
  441.     moveForward()
  442.     digAbove()
  443.     digBelow()
  444.     while height > 0 do
  445.       upBreak()
  446.       height = height - 1
  447.     end
  448.     height = heightMax
  449.     while height > 0 do
  450.       moveDown()
  451.       height = height - 1
  452.     end
  453.     height = heightMax
  454.     placeTorch = placeTorch - 1
  455.     lengthCurrent = lengthCurrent - 1
  456.     if placeTorch <= 0 then
  457.       placeTorch = 10
  458.       turtle.placeDown()
  459.     end
  460.   end
  461.   if lengthCurrent <= 0 and turn == 1 and width > 0 then
  462.     width = width - 1
  463.     if width > 0 then
  464.       rightDig()
  465.       lengthCurrent = lengthMax
  466.       turn = 2
  467.       print("Turned Right")
  468.     end
  469.   end
  470.   if lengthCurrent <= 0 and turn == 2 and width > 0 then
  471.     width = width - 1
  472.     if width > 0 then
  473.       leftDig()
  474.       lengthCurrent = lengthMax
  475.       turn = 1
  476.       print("Turned Left")
  477.     end
  478.   end
  479.   if width <= 0 then
  480.     turnLast = turn
  481.     turn = 3
  482.     ending = true
  483.   end
  484.   if width <= 0 and turn == 3 and ending == true then
  485.     print("Final Walk Home")
  486.     goto(xHome, zHome, yHome)
  487.     kill = true
  488.     turn = 4
  489.   end
  490.   if kill == true then
  491.     print("Killing the Program")
  492.     error()
  493.   end
  494. end
  495.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement