Advertisement
deathpax

Tunnel3Modified

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