Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - local tArgs = { ... }
 - if #tArgs ~= 2 then
 - print( "Usage: branchmine <tunnellength> <tunnelcount>" )
 - return
 - end
 - -- Mine in a parallel tunnel pattern until we hit something we can't dig
 - local length = tonumber( tArgs[1] )
 - local tunnels= tonumber( tArgs[2] )
 - if length < 1 then
 - print( "Tunnel length must be positive.\n" )
 - return
 - end
 - if tunnels < 1 then
 - print( "# of tunnels must be positive.\n" )
 - return
 - end
 - local function refuel()
 - local fuelLevel = turtle.getFuelLevel()
 - if fuelLevel == "unlimited" or fuelLevel > 0 then
 - return
 - end
 - local function tryRefuel()
 - for n=1,16 do
 - if turtle.getItemCount(n) > 0 then
 - turtle.select(n)
 - if turtle.refuel(1) then
 - turtle.select(1)
 - return true
 - end
 - end
 - end
 - turtle.select(1)
 - return false
 - end
 - if not tryRefuel() then
 - print( "Add more fuel to continue." )
 - while not tryRefuel() do
 - sleep(1)
 - end
 - print( "Resuming Tunnel." )
 - end
 - end
 - local collected=0
 - local function collect()
 - collected = collected + 1
 - if math.fmod(collected, 25) == 0 then
 - print( "Mined "..collected.." items." )
 - end
 - end
 - local function tryDig()
 - while turtle.detect() do
 - if turtle.dig() then
 - collect()
 - sleep(0.3)
 - else
 - return false
 - end
 - end
 - return true
 - end
 - local function tryForward()
 - refuel()
 - while not turtle.forward() do
 - if turtle.detect() then
 - if not tryDig() then
 - return false
 - end
 - elseif turtle.attack() then
 - collect()
 - else
 - sleep( 0.3 )
 - end
 - end
 - return true
 - end
 - local function tryDigUp()
 - while turtle.detectUp() do
 - if turtle.digUp() then
 - collect()
 - sleep(0.3)
 - else
 - return false
 - end
 - end
 - return true
 - end
 - local function tryUp()
 - refuel()
 - while not turtle.up() do
 - if turtle.detectUp() then
 - if not tryDigUp() then
 - return false
 - end
 - elseif turtle.attackUp() then
 - collect()
 - else
 - sleep( 0.3 )
 - end
 - end
 - return true
 - end
 - local function tryDigDown()
 - while turtle.detectDown() do
 - if turtle.digDown() then
 - collect()
 - sleep(0.3)
 - else
 - return false
 - end
 - end
 - return true
 - end
 - local function tryDown()
 - refuel()
 - while not turtle.down() do
 - if turtle.detectDown() then
 - if not tryDigDown() then
 - return false
 - end
 - elseif turtle.attackDown() then
 - collect()
 - else
 - sleep( 0.3 )
 - end
 - end
 - return true
 - end
 - local function t3x1(iLgth, bInclCurrent)
 - if ( type(iLgth) ~= "number" or type(bInclCurrent) ~= "boolean" ) then
 - return false
 - end
 - if (bInclCurrent == false ) then
 - tryForward()
 - end
 - for n=1,iLgth do
 - turtle.placeDown()
 - tryUp()
 - tryDigUp()
 - tryDown()
 - if n<iLgth then
 - tryDig()
 - if not tryForward() then
 - print( "Aborting Tunnel." )
 - break
 - end
 - else
 - print( "Tunnel complete." )
 - end
 - end
 - end
 - local ht=0
 - ht=math.floor(tunnels / 2)
 - for n=1,ht do
 - t3x1(length+1, true)
 - turtle.turnLeft()
 - t3x1(3, false)
 - turtle.turnLeft()
 - t3x1(length, false)
 - turtle.turnRight()
 - t3x1(3, false)
 - turtle.turnRight()
 - sleep(0.5)
 - end
 - if (tunnels % 2) ~= 0 then
 - t3x1(length, false)
 - turtle.turnLeft()
 - turtle.turnLeft()
 - for rt=1,length do
 - tryForward()
 - end
 - turtle.turnRight()
 - turtle.turnRight()
 - else
 - turtle.turnRight()
 - for n=1,3 do
 - tryForward()
 - end
 - turtle.turnLeft()
 - end
 - -- clear the cross passage
 - turtle.turnRight()
 - local t1=tunnels - 1
 - for n=1,t1 do
 - t3x1(3,false)
 - end
 - turtle.turnLeft()
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment