ArsKvsh

[CC} dig

Aug 4th, 2019
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.82 KB | None | 0 0
  1. if not turtle then
  2.     printError( "Requires a Turtle" )
  3.     return
  4. end
  5.  
  6. local tArgs = { ... }
  7. if #tArgs ~= 1 then
  8.     print( "Usage: dig <length>" )
  9.     return
  10. end
  11.  
  12. -- Mine in a quarry pattern until we hit something we can't dig
  13. local length = tonumber( tArgs[1] )
  14.  
  15. if length < 1 then
  16.     print( "Dig length must be positive" )
  17.     return
  18. end
  19.  
  20. local function refuel()
  21.     local fuelLevel = turtle.getFuelLevel()
  22.     if fuelLevel == "unlimited" or fuelLevel > 0 then
  23.         return
  24.     end
  25.  
  26.     local function tryRefuel()
  27.         for n=1,16 do
  28.             if turtle.getItemCount(n) > 0 then
  29.                 turtle.select(n)
  30.                 if turtle.refuel(1) then
  31.                     turtle.select(1)
  32.                     return true
  33.                 end
  34.             end
  35.         end
  36.         turtle.select(1)
  37.         return false
  38.     end
  39.  
  40.     if not tryRefuel() then
  41.         print( "Add more fuel to continue." )
  42.         while not tryRefuel() do
  43.             os.pullEvent( "turtle_inventory" )
  44.         end
  45.         print( "Resuming Tunnel Facing." )
  46.     end
  47. end
  48.  
  49. local function tryDig()
  50.     while turtle.detect() do
  51.         if turtle.dig() then
  52.             sleep(0.5)
  53.         else
  54.             return false
  55.         end
  56.     end
  57.     return true
  58. end
  59.  
  60. local function tryForward()
  61.     refuel()
  62.     while not turtle.forward() do
  63.         if turtle.detect() then
  64.             if not tryDig() then
  65.                 return false
  66.             end
  67.         elseif turtle.attack() then
  68.         else
  69.             sleep( 0.5 )
  70.         end
  71.     end
  72.     return true
  73. end
  74.  
  75. for n=1,length do
  76.     tryForward()
  77.    
  78.     if n<length then
  79.         tryDig()
  80.         if not tryForward() then
  81.             print( "Aborting digging." )
  82.             break
  83.         end
  84.     else
  85.         print( "Digging complete." )
  86.     end
  87.  
  88. end
Add Comment
Please, Sign In to add comment