Advertisement
GauHelldragon

GauResumeDigger v0.3

May 5th, 2014
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.57 KB | None | 0 0
  1. -- Digs a 5x5 tunnel straight forward until it runs out of fuel. Will attempt to refuel as it goes, using coal it finds
  2. -- Place chests in slot 16 of the turtle inventory to make it place chests and fill them as it travels
  3.  
  4. local ChestSlot = 16
  5.  
  6. local myX=0
  7. local myY=0
  8. local myDir=0
  9.  
  10. function setPosition(newX,newY,newDir)
  11.   myX = newX
  12.   myY = newY
  13.   myDir = newDir
  14.   io.output("Dig_Resume_File")
  15.   io.write(myX .. "\n")
  16.   io.write(myY .. "\n")
  17.   io.write(myDir .. "\n")
  18.   io.close()
  19. end
  20.  
  21.  
  22.  
  23.  
  24.  
  25. function refuel()
  26.   local slot = 1
  27.   while ( turtle.getFuelLevel() < 100 and slot < 15 ) do
  28.     slot = slot + 1
  29.     turtle.select(slot)
  30.     turtle.refuel(10)
  31.   end
  32.   turtle.select(1)
  33. end
  34.  
  35. function tryForward()
  36.   refuel()
  37.   if ( turtle.getFuelLevel() < 100 ) then
  38.     print "Ran out of fuel!"
  39.     os.exit()
  40.   end
  41.   while ( not turtle.forward() ) do
  42.     turtle.dig()
  43.     os.sleep(1)
  44.   end
  45. end
  46.  
  47. function tryUp()
  48.   refuel()
  49.   if ( turtle.getFuelLevel() < 100 ) then
  50.     print "Ran out of fuel!"
  51.     os.exit()
  52.   end
  53.   while ( not turtle.up() ) do
  54.     turtle.digUp()
  55.     os.sleep(1)
  56.   end
  57. end
  58.  
  59. function tryDown()
  60.   refuel()
  61.   if ( turtle.getFuelLevel() < 100 ) then
  62.     print "Ran out of fuel!"
  63.     os.exit()
  64.   end
  65.   while ( not turtle.down() ) do
  66.     turtle.digDown()
  67.     os.sleep(1)
  68.   end
  69. end
  70.  
  71.  
  72.  
  73. function checkSpace()
  74.   if ( turtle.getItemCount(12) > 0 ) then
  75.     if ( turtle.getItemCount(ChestSlot) <= 0 ) then
  76.       print "Ran out of space"
  77.       os.exit()
  78.     end
  79.    
  80.     turtle.turnLeft()
  81.     setPosition(myX,myY,-1)
  82.     turtle.turnLeft()
  83.     setPosition(myX,myY,2)
  84.     turtle.select(ChestSlot)
  85.     turtle.place()
  86.     for slot = 1,15 do
  87.       turtle.select(slot)
  88.       turtle.drop()
  89.     end
  90.    
  91.     turtle.turnLeft()
  92.     setPosition(myX,myY,1)
  93.     turtle.turnLeft()
  94.     setPosition(myX,myY,0)
  95.    
  96.   end
  97.   turtle.select(1)
  98. end
  99.  
  100.  
  101. function digTunnel()
  102.   turtle.turnLeft()
  103.   setPosition(myX,myY,myDir-1)
  104.   tryForward()
  105.   setPosition(myX-1,myY,myDir)
  106.   tryForward()
  107.   setPosition(myX-1,myY,myDir)
  108.   turtle.turnRight()
  109.   setPosition(myX,myY,myDir+1)
  110.   for x=1,5 do
  111.     for y=1,5 do
  112.       tryUp()
  113.       setPosition(myX,myY+1,myDir)
  114.     end
  115.     for y=1,5 do
  116.       tryDown()
  117.       setPosition(myX,myY-1,myDir)
  118.       turtle.dig()
  119.     end
  120.     turtle.turnRight()
  121.     setPosition(myX,myY,myDir+1)
  122.     tryForward()
  123.     setPosition(myX+1,myY,myDir)
  124.     turtle.turnLeft()
  125.     setPosition(myX,myY,myDir-1)
  126.    
  127.   end
  128.   turtle.turnLeft()
  129.   setPosition(myX,myY,myDir-1)
  130.   tryForward()
  131.   setPosition(myX-1,myY,myDir)
  132.   tryForward()
  133.   setPosition(myX-1,myY,myDir)
  134.   tryForward()
  135.   setPosition(myX-1,myY,myDir)
  136.   turtle.turnRight()
  137.   setPosition(myX,myY,myDir+1)
  138.   tryForward()
  139. end
  140.  
  141.  
  142. function tryReset()
  143.   if ( not fs.exists("Dig_Resume_File") ) then
  144.     print "Could not find a resume file"
  145.     return
  146.   end
  147.   io.input("Dig_Resume_File")
  148.   local xPos = tonumber(io.read())
  149.   local yPos = tonumber(io.read())
  150.   local dir = tonumber(io.read())
  151.   io.close()
  152.  
  153.   if ( dir == -1 )  then
  154.     turtle.turnRight()
  155.   end
  156.   if ( dir == 1 ) then
  157.     turtle.turnLeft()
  158.   end
  159.   if ( dir == 2 ) then
  160.     turtle.turnLeft()
  161.     turtle.turnLeft()
  162.   end
  163.  
  164.   if ( yPos ~= 0 )  then
  165.     for y = 1,yPos do
  166.       tryDown()
  167.     end
  168.   end
  169.   if ( xPos ~= 0 ) then
  170.     if ( xPos < 0 ) then
  171.       xPos = math.abs(xPos)
  172.       turtle.turnRight()
  173.       for x = 1,xPos do
  174.         tryForward()
  175.       end
  176.       turtle.turnLeft()
  177.     end
  178.     if ( xPos > 0 ) then
  179.       turtle.turnLeft()
  180.       for x = 1,xPos do
  181.         tryForward()
  182.       end
  183.       turtle.turnRight()
  184.     end
  185.   end  
  186.  
  187. end
  188.  
  189. while true do
  190.   arg = {...}
  191.   if ( #arg >= 1 ) then
  192.     tryReset()
  193.   end
  194.   digTunnel()
  195.   checkSpace()
  196. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement