DogePastes

QuarryV3

Nov 6th, 2022 (edited)
692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.21 KB | None | 0 0
  1. -- partnerID = 0
  2. justPlaced = false
  3. layersDown = 0
  4. extraLayers = 0
  5.  
  6. turtle.select(2)
  7.  
  8. turtle.refuel()
  9. shell.execute("clear")
  10. print("Fuel:", tostring(turtle.getFuelLevel()))
  11.  
  12. turtle.select(1)
  13.  
  14. function mine()
  15.     turtle.dig()
  16.     turtle.digUp()
  17.     turtle.forward()
  18. end
  19.  
  20. function turnLeft()
  21.     turtle.turnLeft()
  22.     mine()
  23.     turtle.turnLeft()
  24. end
  25.  
  26. function turnRight()
  27.     turtle.turnRight()
  28.     mine()
  29.     turtle.turnRight()
  30. end
  31.  
  32. print("How wide?")
  33. width = tonumber(read())
  34. print("How long?")
  35. length = tonumber(read())
  36. print("How many layers?")
  37. layers = tonumber(read())
  38.  
  39. function mineWidth()
  40.     for i = width - 1, 1, -1 do
  41.         mine()
  42.         -- rednet.send(partnerID,"Forward")
  43.     end
  44. end
  45.  
  46. turnCount = 1
  47. function mineTotal()
  48.     for i = length, 1, -1 do
  49.         mineWidth()
  50.         if i ~= 1 then
  51.             if turnCount == 1 then
  52.                 turnLeft()
  53.                 -- rednet.send(partnerID,"turnLeft")
  54.                 turnCount = turnCount + 1
  55.             elseif turnCount == 2 then
  56.                 turnRight()
  57.                 -- rednet.send(partnerID,"turnRight")
  58.                 turnCount = turnCount - 1
  59.             end
  60.         end
  61.     end
  62. end
  63.  
  64. function mineFull()
  65.     if justPlaced == false then
  66.         turtle.digUp()
  67.     end
  68.     turtle.digDown()
  69.     turtle.down()
  70.     justPlaced = false
  71.     -- rednet.send(partnerID,"Down")
  72.     mineTotal()
  73.     turtle.turnLeft()
  74.     turtle.turnLeft()
  75.     -- rednet.send(partnerID,"Turn Around")
  76. end
  77.  
  78. function ivFull()
  79.     for i = 1, 16 do
  80.         if turtle.getItemCount(i) == 0 then
  81.             return false
  82.         end
  83.     end
  84.     return true
  85. end
  86.  
  87. function refuel()
  88.     for i = 2, 16 do -- loop through the slots
  89.         turtle.select(i)
  90.         if turtle.refuel(0) then
  91.             amountToTake = math.ceil(turtle.getItemCount(i)-1)
  92.             turtle.refuel(amountToTake)
  93.         end
  94.     end
  95.  
  96.     turtle.select(1)
  97. end
  98.  
  99. function layerCount(layersValue)
  100.     extraLayers = 0
  101.     for i = layersValue, 1, -1 do
  102.         if turtle.getFuelLevel() <= length*width then
  103.             refuel()
  104.         end
  105.         if ivFull() == false then
  106.             if rednet.receive(0.2) then
  107.                 rednet.broadcast("Stopping...")
  108.                 break
  109.             end
  110.             mineFull()
  111.             layersDown = layersDown + 1
  112.         else
  113.             refuel()
  114.             turtle.digUp()
  115.             turtle.placeUp()
  116.             for i = 2, 16 do
  117.                 turtle.select(i)
  118.                 turtle.dropUp()
  119.             end
  120.             turtle.select(1)
  121.             justPlaced = true
  122.             extraLayers = extraLayers + 1
  123.         end
  124.         select(1)
  125.         if turtle.getItemCount(1) == 0 then
  126.             break
  127.         end
  128.     end
  129.  
  130.     if extraLayers > 0 then
  131.         layerCount(extraLayers)
  132.     end
  133. end
  134.  
  135. function Task()
  136.     layerCount(layers)
  137.  
  138.     turtle.forward()
  139.    
  140.     if turtle.getFuelLevel() < layersDown then
  141.         refuel()
  142.     end
  143.  
  144.     for i = layersDown, 1, -1 do
  145.         -- rednet.send(partnerID,"Up")
  146.         turtle.up()
  147.     end
  148. end
  149.  
  150. rednet.open("left")
  151. rednet.receive()
  152. rednet.broadcast("Stopping...")
  153. -- rednet.send(partnerID,"Begin")
  154.  
  155. Task()
  156.  
Add Comment
Please, Sign In to add comment