nSun

Chunk Cleaner

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