"[Turtle] 3x3 tunneler" By RainbowDashite (https://pastebin.com/u/RainbowDashite) URL: https://pastebin.com/F5BRdLmA Created on: Friday 27th of February 2015 10:06:43 PM CDT Retrieved on: Saturday 31 of October 2020 04:00:37 PM UTC --[[Tunneler Beta]]-- --[[by Burton]]-- --Fuel Slot is 16 --Torch slot is 15 --To do --Variable height and width --Optional walls --Block off water/lava --Set default variables local distance = 0 local torches = -1 local TD = nil local length = nil --User set variables term.clear() term.setCursorPos(4,7) print("**Welcome to Tunneler by Burton**") term.setCursorPos(12,13) print("*Tunneler Beta*") os.sleep(2) term.clear() term.setCursorPos(3,2) print("Place empty chest behind turtle") term.setCursorPos(3,4) print("Place Chest with fuel to left of turtle") term.setCursorPos(3,6) print("Place Chest with Torches to right of turtle") term.setCursorPos(3,8) print("Place fuel in slot 16") term.setCursorPos(3,10) print("Place torches in slot 15") os.sleep(5) term.clear() term.setCursorPos(1,1) while not length do print("Tunnel length?") length = tonumber(read()) if not length then print("Please enter a Integer 1,2,3...") end end while not TD do print("Blocks between torches?") TD = tonumber(read()) if not TD then print("Please enter a Integer 1,2,3...") end end term.clear() term.setCursorPos(1,1) local torchNum = turtle.getItemCount(15) print("Ok starting tunnel...") term.setCursorPos(1,3) print(length .. " blocks long torches every " .. (TD)+1 .. " blocks") term.setCursorPos(1,5) print("Hold Ctrl + T at any time to cancel") os.sleep(1) term.setCursorPos(1,7) turtle.select(1) --Custom dig function function d() while turtle.detect(true) do turtle.dig() end end --Custom digUp function function du() while turtle.detectUp(true) do turtle.digUp() end end --Custom forward function function mf() while not turtle.forward() do if not turtle.dig() then turtle.attack() end end end --Custom up function function mu() while not turtle.up() do if not turtle.digUp() then turtle.attackUp() end end end --Custom down function function md() while not turtle.down() do if not turtle.digDown() then turtle.attackDown() end end end --Return function function back() if distance ~= nil then distance = tonumber(distance) while turtle.getFuelLevel() < distance do refuel() end for i = 1, distance do mf() end end end --Empty function function empty() if turtle.getItemCount(14) ~= 0 then mu() mu() turtle.turnRight() turtle.turnRight() back() md() md() for i = 1,14 do turtle.select(i) if turtle.detect(true) then turtle.drop() end end mu() mu() turtle.turnRight() turtle.turnRight() back() md() md() turtle.select(1) end end --Refuel function function refuel() while tonumber(turtle.getFuelLevel()) < tonumber(length) do for i = 1,14 do turtle.select(i) if turtle.compareTo(16) then turtle.transferTo(16) turtle.select(1) end end turtle.select(16) if turtle.refuel(0) then print("Fuel level low ...Refuelling.") turtle.refuel(1) turtle.select(1) else mu() mu() turtle.turnRight() turtle.turnRight() back() md() md() turtle.turnRight() turtle.select(16) turtle.suck(64) if turtle.getItemCount(16) == 0 then local i = 0 print("FUEL LEVEL LOW") print("Place fuel in slot 16 and press ENTER") while i == 0 do local sEvent, keystroke = os.pullEvent("key") if sEvent == "key" then if keystroke == 28 then refuel() i = 1 end end end end turtle.select(1) turtle.turnRight() mu() mu() back() md() md() end end end --Torch placing function function placeTorch() if torchNum > 0 then if tonumber(TD) == tonumber(torches) then turtle.turnLeft() turtle.turnLeft() turtle.select(15) turtle.place() torchNum = torchNum - 1 turtle.select(1) turtle.turnLeft() turtle.turnLeft() torches = -1 print("Fuel level is " .. turtle.getFuelLevel()) end else mu() mu() turtle.turnRight() turtle.turnRight() back() md() md() turtle.turnLeft() turtle.select(15) turtle.suck(64) if turtle.getItemCount(15) == 0 then local i = 0 print("No Torches") print("Place Torches in slot 15 and press ENTER") while i == 0 do local sEvent, keystroke = os.pullEvent("key") if sEvent == "key" then if keystroke == 28 then i = 1 end end end end turtle.select(1) turtle.turnLeft() mu() mu() back() md() md() end end --Main Loop while tonumber(distance) < tonumber(length) do placeTorch() refuel() empty() d() mf() torches = torches + 1 distance = distance + 1 print("Tunneled " .. distance .. " blocks") du() turtle.turnLeft() d() mu() du() d() du() mu() d() turtle.turnRight() turtle.turnRight() d() md() d() md() d() turtle.turnLeft() turtle.turnLeft() d() turtle.turnRight() end --Empty inventory when done mu() mu() turtle.turnRight() turtle.turnRight() back() md() md() for i = 1,14 do turtle.select(i) if turtle.detect(true) then turtle.drop() end end turtle.turnRight() turtle.turnRight() term.clear() term.setCursorPos(1,1) print("Tunnel Complete " .. distance .. " blocks long")