Advertisement
sanovskiy

tunnel straight

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