Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Digs a 5x5 tunnel straight forward until it runs out of fuel. Will attempt to refuel as it goes, using coal it finds
- -- Place chests in slot 16 of the turtle inventory to make it place chests and fill them as it travels
- local ChestSlot = 16
- local myX=0
- local myY=0
- local myDir=0
- function setPosition(newX,newY,newDir)
- myX = newX
- myY = newY
- myDir = newDir
- io.output("Dig_Resume_File")
- io.write(myX .. "\n")
- io.write(myY .. "\n")
- io.write(myDir .. "\n")
- io.close()
- end
- function refuel()
- local slot = 1
- while ( turtle.getFuelLevel() < 100 and slot < 15 ) do
- slot = slot + 1
- turtle.select(slot)
- turtle.refuel(10)
- end
- turtle.select(1)
- end
- function tryForward()
- refuel()
- if ( turtle.getFuelLevel() < 100 ) then
- print "Ran out of fuel!"
- os.exit()
- end
- while ( not turtle.forward() ) do
- turtle.dig()
- os.sleep(1)
- end
- end
- function tryUp()
- refuel()
- if ( turtle.getFuelLevel() < 100 ) then
- print "Ran out of fuel!"
- os.exit()
- end
- while ( not turtle.up() ) do
- turtle.digUp()
- os.sleep(1)
- end
- end
- function tryDown()
- refuel()
- if ( turtle.getFuelLevel() < 100 ) then
- print "Ran out of fuel!"
- os.exit()
- end
- while ( not turtle.down() ) do
- turtle.digDown()
- os.sleep(1)
- end
- end
- function checkSpace()
- if ( turtle.getItemCount(12) > 0 ) then
- if ( turtle.getItemCount(ChestSlot) <= 0 ) then
- print "Ran out of space"
- os.exit()
- end
- turtle.turnLeft()
- setPosition(myX,myY,-1)
- turtle.turnLeft()
- setPosition(myX,myY,2)
- turtle.select(ChestSlot)
- turtle.place()
- for slot = 1,15 do
- turtle.select(slot)
- turtle.drop()
- end
- turtle.turnLeft()
- setPosition(myX,myY,1)
- turtle.turnLeft()
- setPosition(myX,myY,0)
- end
- turtle.select(1)
- end
- function digTunnel()
- turtle.turnLeft()
- setPosition(myX,myY,myDir-1)
- tryForward()
- setPosition(myX-1,myY,myDir)
- tryForward()
- setPosition(myX-1,myY,myDir)
- turtle.turnRight()
- setPosition(myX,myY,myDir+1)
- for x=1,5 do
- for y=1,5 do
- tryUp()
- setPosition(myX,myY+1,myDir)
- end
- for y=1,5 do
- tryDown()
- setPosition(myX,myY-1,myDir)
- turtle.dig()
- end
- turtle.turnRight()
- setPosition(myX,myY,myDir+1)
- tryForward()
- setPosition(myX+1,myY,myDir)
- turtle.turnLeft()
- setPosition(myX,myY,myDir-1)
- end
- turtle.turnLeft()
- setPosition(myX,myY,myDir-1)
- tryForward()
- setPosition(myX-1,myY,myDir)
- tryForward()
- setPosition(myX-1,myY,myDir)
- tryForward()
- setPosition(myX-1,myY,myDir)
- turtle.turnRight()
- setPosition(myX,myY,myDir+1)
- tryForward()
- end
- function tryReset()
- if ( not fs.exists("Dig_Resume_File") ) then
- print "Could not find a resume file"
- return
- end
- io.input("Dig_Resume_File")
- local xPos = tonumber(io.read())
- local yPos = tonumber(io.read())
- local dir = tonumber(io.read())
- io.close()
- if ( dir == -1 ) then
- turtle.turnRight()
- end
- if ( dir == 1 ) then
- turtle.turnLeft()
- end
- if ( dir == 2 ) then
- turtle.turnLeft()
- turtle.turnLeft()
- end
- if ( yPos ~= 0 ) then
- for y = 1,yPos do
- tryDown()
- end
- end
- if ( xPos ~= 0 ) then
- if ( xPos < 0 ) then
- xPos = math.abs(xPos)
- turtle.turnRight()
- for x = 1,xPos do
- tryForward()
- end
- turtle.turnLeft()
- end
- if ( xPos > 0 ) then
- turtle.turnLeft()
- for x = 1,xPos do
- tryForward()
- end
- turtle.turnRight()
- end
- end
- end
- while true do
- arg = {...}
- if ( #arg >= 1 ) then
- tryReset()
- end
- digTunnel()
- checkSpace()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement