Advertisement
sanovskiy

digdown

Apr 24th, 2020
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.68 KB | None | 0 0
  1. local function tryDig()
  2.         while turtle.detect() do
  3.                 if turtle.dig() then
  4.                         sleep(1)
  5.                 else
  6.                         return false
  7.                 end
  8.         end
  9.         return true
  10. end
  11.  
  12. local function tryDigUp()
  13.         while turtle.detectUp() do
  14.                 if turtle.digUp() then
  15.                         sleep(1)
  16.                 else
  17.                         return false
  18.                 end
  19.         end
  20.         return true
  21. end
  22.  
  23. local function tryDigDown()
  24.         while turtle.detectDown() do
  25.                 if turtle.digDown() then
  26.                         sleep(0.5)
  27.                 else
  28.                         return false
  29.                 end
  30.         end
  31.         return true
  32. end
  33.  
  34. local function refuel()
  35.         local fuelLevel = turtle.getFuelLevel()
  36.         if fuelLevel == "unlimited" or fuelLevel > 0 then
  37.                 return
  38.         end
  39.        
  40.         local function tryRefuel()
  41.                 for n=1,16 do
  42.                         if turtle.getItemCount(n) > 0 then
  43.                                 turtle.select(n)
  44.                                 if turtle.refuel(1) then
  45.                                         turtle.select(1)
  46.                                         return true
  47.                                 end
  48.                         end
  49.                 end
  50.                 turtle.select(1)
  51.                 return false
  52.         end
  53.        
  54.         if not tryRefuel() then
  55.                 print( "Add more fuel to continue." )
  56.                 while not tryRefuel() do
  57.                         sleep(1)
  58.                 end
  59.                 print( "Resuming Tunnel." )
  60.         end
  61. end
  62.  
  63. local function tryUp()
  64.         refuel()
  65.         while not turtle.up() do
  66.                 if turtle.detectUp() then
  67.                         if not tryDigUp() then
  68.                                 return false
  69.                         end
  70.                 elseif turtle.attackUp() then
  71.                         sleep( 0.5 )
  72.                 else
  73.                         sleep( 0.5 )
  74.                 end
  75.         end
  76.         return true
  77. end
  78.  
  79. local function tryDown()
  80.         refuel()
  81.         while not turtle.down() do
  82.                 if turtle.detectDown() then
  83.                         if not tryDigDown() then
  84.                                 return false
  85.                         end
  86.                 elseif turtle.attackDown() then
  87.                         sleep( 0.5 )
  88.                 else
  89.                         sleep( 0.5 )
  90.                 end
  91.         end
  92.         return true
  93. end
  94.  
  95. local function tryForward()
  96.         refuel()
  97.         while not turtle.forward() do
  98.                 if turtle.detect() then
  99.                         if not tryDig() then
  100.                                 return false
  101.                         end
  102.                 elseif turtle.attack() then
  103.                         sleep( 0.5 )
  104.                 else
  105.                         sleep( 0.5 )
  106.                 end
  107.         end
  108.         return true
  109. end
  110.  
  111. local function levelCycle()
  112.   tryDigUp()
  113.   tryUp()
  114.   tryDigUp()
  115.   tryUp()
  116.   turtle.turnLeft()
  117.   tryDig()
  118.   turtle.turnRight()
  119.   turtle.turnRight()
  120.   tryDig()
  121.   tryDown()
  122.   tryDig()
  123.   turtle.turnLeft()
  124.   turtle.turnLeft()
  125.   tryDig()
  126.   tryDown()
  127.   tryDig()
  128.   turtle.turnRight()
  129.   turtle.turnRight()
  130.   tryDig()
  131.   tryDown()
  132.   tryDig()
  133.   turtle.turnLeft()
  134.   turtle.turnLeft()
  135.   tryDig()
  136.   turtle.turnRight()
  137.   tryDig()
  138.   tryForward()
  139. end
  140.  
  141. -- Main code here
  142.  
  143. local tArgs = { ... }
  144.  
  145. if #tArgs < 1 or #tArgs > 1 then
  146.   error("Usage: digdown <depth>")
  147. end
  148.  
  149. depth = tonumber(tArgs[1])
  150.  
  151. while depth > 0 do
  152.   levelCycle()
  153.   depth = depth - 1
  154. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement