Guest User

Untitled

a guest
Jan 17th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.83 KB | None | 0 0
  1.  
  2. local tArgs = { ... }
  3. if #tArgs ~= 1 then
  4.     print( "Usage: tunnel <length>" )
  5.     return
  6. end
  7.  
  8. -- Mine in a quarry pattern until we hit something we can't dig
  9. local length = tonumber( tArgs[1] )
  10. if length < 1 then
  11.     print( "Tunnel length must be positive" )
  12.     return
  13. end
  14.    
  15. local depth = 0
  16. local collected = 0
  17.  
  18. local function collect()
  19.     collected = collected + 1
  20.     if math.fmod(collected, 25) == 0 then
  21.         print( "Mined "..collected.." items." )
  22.     end
  23. end
  24.  
  25. local function tryDig()
  26.     while turtle.detect() do
  27.         if turtle.dig() then
  28.             collect()
  29.             sleep(0.5)
  30.         else
  31.             return false
  32.         end
  33.     end
  34.     return true
  35. end
  36.  
  37. local function tryDigUp()
  38.     while turtle.detectUp() do
  39.         if turtle.digUp() then
  40.             collect()
  41.             sleep(0.5)
  42.         else
  43.             return false
  44.         end
  45.     end
  46.     return true
  47. end
  48.  
  49. local function refuel()
  50.     local fuelLevel = turtle.getFuelLevel()
  51.     if fuelLevel == "unlimited" or fuelLevel > 0 then
  52.         return
  53.     end
  54.    
  55.     local function tryRefuel()
  56.         for n=1,16 do
  57.             if turtle.getItemCount(n) > 0 then
  58.                 turtle.select(n)
  59.                 if turtle.refuel(1) then
  60.                     turtle.select(1)
  61.                     return true
  62.                 end
  63.             end
  64.         end
  65.         turtle.select(1)
  66.         return false
  67.     end
  68.    
  69.     if not tryRefuel() then
  70.         print( "Add more fuel to continue." )
  71.         while not tryRefuel() do
  72.             sleep(1)
  73.         end
  74.         print( "Resuming Tunnel." )
  75.     end
  76. end
  77.  
  78. local function tryUp()
  79.     refuel()
  80.     while not turtle.up() do
  81.         if turtle.detectUp() then
  82.             if not tryDigUp() then
  83.                 return false
  84.             end
  85.         elseif turtle.attackUp() then
  86.             collect()
  87.         else
  88.             sleep( 0.5 )
  89.         end
  90.     end
  91.     return true
  92. end
  93.  
  94. local function tryDown()
  95.     refuel()
  96.     while not turtle.down() do
  97.         if turtle.detectDown() then
  98.             if not tryDigDown() then
  99.                 return false
  100.             end
  101.         elseif turtle.attackDown() then
  102.             collect()
  103.         else
  104.             sleep( 0.5 )
  105.         end
  106.     end
  107.     return true
  108. end
  109.  
  110. local function tryForward()
  111.     refuel()
  112.     while not turtle.forward() do
  113.         if turtle.detect() then
  114.             if not tryDig() then
  115.                 return false
  116.             end
  117.         elseif turtle.attack() then
  118.             collect()
  119.         else
  120.             sleep( 0.5 )
  121.         end
  122.     end
  123.     return true
  124. end
  125.  
  126. print( "Tunnelling..." )
  127.  
  128. for n=1,length do
  129.  turtle.placeDown()
  130.  tryDigUp()
  131.  turtle.turnLeft()
  132.  tryDig()
  133.  tryUp()
  134.  tryDig()
  135.  tryDigUp()
  136.  tryUp()
  137.  tryDig()
  138.  turtle.turnRight()
  139.  turtle.turnRight()
  140.  tryDig()
  141.  tryDown()
  142.  tryDig()
  143.  tryDown()
  144.  tryDig()
  145.  turtle.turnLeft()
  146.  
  147.     if n<length then
  148.         tryDig()
  149.         if not tryForward() then
  150.             print( "Aborting Tunnel." )
  151.             break
  152.         end
  153.     else
  154.         print( "Tunnel complete." )
  155.     end
  156.  
  157. end
  158.  
  159. --[[
  160. print( "Returning to start..." )
  161.  
  162. -- Return to where we started
  163. turtle.turnLeft()
  164. turtle.turnLeft()
  165. while depth > 0 do
  166.     if turtle.forward() then
  167.         depth = depth - 1
  168.     else
  169.         turtle.dig()
  170.     end
  171. end
  172. turtle.turnRight()
  173. turtle.turnRight()
  174. ]]
  175.  
  176. print( "Tunnel complete." )
  177. print( "Mined "..collected.." items total." )
Add Comment
Please, Sign In to add comment