Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----------------------------------
- -- Warning ! WORK IN PROGRESS ! --
- -- Has not been fully tested ! --
- ----------------------------------
- --
- -- MigukNamja's 1st Line Dig Program
- -- Copyright 2013 MigukNamja
- -- miguknamja@gmail.com
- --
- -- Move forward 'blocks' number of blocks, digging when necessary
- -- Hitting bedrock or something undiggable like an entity (creature) will
- -- prevent forward movement
- --
- -- Return actual blocks moved forward
- function moveForward(blocks)
- if blocks < 0 then return moveBack(0-blocks) end
- if blocks == 0 then return 0 end
- local moved = 0
- while moved < blocks do
- if turtle.forward() then -- air, nothing to dig, but go down
- moved = moved + 1
- elseif turtle.dig() then -- had to dig to go forwards
- if not turtle.forward() then
- local attempts = 0
- while turtle.dig() and attempts < 20 do
- attempts = attempts + 1 -- take care water won't cause infinite digging
- sleep(0.25) -- might have to chew through a stack of sand or gravel
- end
- if turtle.forward() then
- moved = moved + 1
- end
- else
- moved = moved + 1
- end
- else -- undiggable, give up (for now)
- return moved
- end
- sleep(0.25) -- sleep to avoid yielding error
- end
- return moved
- end
- -- Move backwards, digging when necessary
- function moveBack(blocks)
- if blocks < 0 then return moveForward(0-blocks) end
- if blocks == 0 then return 0 end
- local moved = 0
- turtle.turnRight()
- turtle.turnRight()
- moved = moveForward(blocks)
- turtle.turnRight()
- turtle.turnRight()
- return moved
- end
- function usage()
- print( "Usage: lineDig <blocks_forward>" )
- end
- function parseArgs(args)
- local validSyntax = false
- local bForward = 0
- if #args ~= 1 then
- return false
- elseif args[1] == "help" then
- return false
- elseif args[1] == nil then
- return false
- else
- bForward = tonumber( args[1] )
- if bForward < 0 then
- validSyntax = false
- else
- validSyntax = true
- end
- end
- return validSyntax, bForward
- end
- local tArgs = { ... }
- validSyntax, bForward = parseArgs(tArgs)
- if not validSyntax then
- usage()
- return
- end
- print( "Digging ", bForward, " blocks forward." )
- -- Dig forward
- assert( moveForward( bForward ) == bForward )
- -- Traverse in the reverse direction from the dig coordinates
- assert( moveBack( bForward ) == bForward )
- print( "I have finished the assigned task, my master !" )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement