Advertisement
Birog

Tunnel3x3B

Sep 25th, 2014
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local tArgs = { ... }
  2. if #tArgs ~= 1 then
  3.     print( "Usage: tunnel <length>" )
  4.     return
  5. end
  6.  
  7. -- Mine in a quarry pattern until we hit something we can't dig
  8. local length = tonumber( tArgs[1] )
  9. if length < 1 then
  10.     print( "Tunnel length must be positive" )
  11.     return
  12. end
  13.    
  14. local depth = length
  15. local collected = 0
  16.  
  17. local function collect()
  18.     collected = collected + 1
  19.     if math.fmod(collected, 25) == 0 then
  20.         print( "Mined "..collected.." items." )
  21.     end
  22. end
  23.  
  24. local function tryDig()
  25.     while turtle.detect() do
  26.         if turtle.dig() then
  27.             collect()
  28.             sleep(0.5)
  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.             collect()
  40.             sleep(0.5)
  41.         else
  42.             return false
  43.         end
  44.     end
  45.     return true
  46. end
  47.  
  48. local function refuel()
  49.     local fuelLevel = turtle.getFuelLevel()
  50.     if fuelLevel == "unlimited" or fuelLevel > 0 then
  51.         return
  52.     end
  53.    
  54.     local function tryRefuel()
  55.         for n=1,16 do
  56.             if turtle.getItemCount(n) > 0 then
  57.                 turtle.select(n)
  58.                 if turtle.refuel(1) then
  59.                     turtle.select(1)
  60.                     return true
  61.                 end
  62.             end
  63.         end
  64.         turtle.select(1)
  65.         return false
  66.     end
  67.    
  68.     if not tryRefuel() then
  69.         print( "Add more fuel to continue." )
  70.         while not tryRefuel() do
  71.             sleep(1)
  72.         end
  73.         print( "Resuming Tunnel." )
  74.     end
  75. end
  76.  
  77. local function tryUp()
  78.     refuel()
  79.     while not turtle.up() do
  80.         if turtle.detectUp() then
  81.             if not tryDigUp() then
  82.                 return false
  83.             end
  84.         elseif turtle.attackUp() then
  85.             collect()
  86.         else
  87.             sleep( 0.5 )
  88.         end
  89.     end
  90.     return true
  91. end
  92.  
  93. local function tryDigDown()
  94.         while turtle.detectDown() do
  95.                 if turtle.digDown() then
  96.                         collect()
  97.                         sleep(0.5)
  98.                 else
  99.                         return false
  100.                 end
  101.         end
  102.         return true
  103. end
  104.  
  105. local function tryDown()
  106.     refuel()
  107.     while not turtle.down() do
  108.         if turtle.detectDown() then
  109.             if not tryDigDown() then
  110.                 return false
  111.             end
  112.         elseif turtle.attackDown() then
  113.             collect()
  114.         else
  115.             sleep( 0.5 )
  116.         end
  117.     end
  118.     return true
  119. end
  120.  
  121. local function tryForward()
  122.     refuel()
  123.     while not turtle.forward() do
  124.         if turtle.detect() then
  125.             if not tryDig() then
  126.                 return false
  127.             end
  128.         elseif turtle.attack() then
  129.             collect()
  130.         else
  131.             sleep( 0.5 )
  132.         end
  133.     end
  134.     return true
  135. end
  136.  
  137. local function tryBack()
  138.     refuel()
  139.     while not turtle.back() do
  140.         if turtle.detect() then
  141.             if not tryDig() then
  142.                 return false
  143.             end
  144.         elseif turtle.attack() then
  145.             collect()
  146.         else
  147.             sleep( 0.5 )
  148.         end
  149.     end
  150.     return true
  151. end
  152.  
  153. print( " Fackeln in Slot 15 ")
  154. print( "Tunnelling..." )
  155. j=0
  156. for n=1,length do
  157.     pro = 100/length*n
  158.     turtle.placeDown()
  159.     tryDigUp()
  160.     turtle.turnLeft()
  161.     tryDig()
  162.         for u=1,3 do
  163.         tryUp()
  164.         tryDig()
  165.         end
  166.     turtle.turnRight()
  167.     turtle.turnRight()
  168.         for d=1,3 do
  169.         tryDig()
  170.         tryDown()
  171.         end
  172.     tryDig()
  173.    
  174.         j = j+1
  175.         if j == 5 then
  176.         turtle.turnRight()
  177.         turtle.select(15)
  178.         turtle.place()
  179.         turtle.turnLeft()
  180.         j = 0
  181.         end
  182.     print(" Es sind bereits "..pro.." Prozent abgeschlossen")
  183.     turtle.turnLeft()
  184.         if n<length then
  185.                 tryDig()
  186.                 if not tryForward() then
  187.                         print( "Aborting Tunnel." )
  188.                         break
  189.                 end
  190.         else
  191.         turtle.up()
  192.         turtle.turnLeft()
  193.         turtle.turnLeft()
  194.         for n=1,length do
  195.             tryForward()
  196.         end
  197.                 print( "Tunnel complete." )
  198.         end
  199.  
  200. end
  201.  
  202. print( "Tunnel complete." )
  203. print( "Mined "..collected.." items total." )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement