Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Own Tunnel Turtle same size 2X3 but with feature bring items in chest, set torches and refill the border with cobble stone
- length = 100
- torchPl = 5
- torchCounter = 0
- layerCounter = 0
- function layerDig()
- leftLayer()
- refillCopple()
- rightLayer()
- refillCopple()
- checkItemsAndGoEmpty()
- end
- function leftLayer()
- Dig()
- ForwardDown()
- checkLeftBorder()
- DigUp()
- MoveUppest()
- checkFrontBorder()
- turn180()
- Dig()
- ForwardUp()
- DigDown()
- MoveLowest()
- Dig()
- ForwardDown()
- checkFrontBorder()
- DigUp()
- MoveUppest()
- checkFrontBorder()
- layerCounter = layerCounter + 1
- placeTorch()
- turtle.turnLeft()
- end
- function rightLayer()
- Dig()
- ForwardUp()
- checkRightBorder()
- DigDown()
- MoveLowest()
- checkFrontBorder()
- turn180()
- Dig()
- ForwardDown()
- DigUp()
- MoveUppest()
- Dig()
- ForwardUp()
- checkFrontBorder()
- placeTorch()
- DigDown()
- MoveLowest()
- checkFrontBorder()
- layerCounter = layerCounter + 1
- turtle.turnRight()
- end
- function Dig()
- while turtle.detect() do
- turtle.dig()
- sleep(0.4)
- end
- end
- function DigUp()
- while turtle.detectUp() do
- turtle.digUp()
- sleep(0.4)
- end
- end
- function DigDown()
- while turtle.detectDown() do
- turtle.digDown()
- sleep(0.4)
- end
- end
- function BackToChest()
- turn180()
- for i=1, layerCounter, 1 do
- Dig()
- turtle.forward()
- end
- Drop()
- turn180()
- end
- function BackToLayer()
- for i=1, layerCounter, 1 do
- Dig()
- turtle.forward()
- end
- end
- function Drop()
- for i=1, 14, 1 do
- turtle.select(i)
- turtle.drop(64)
- end
- end
- function ForwardDown()
- turtle.forward()
- if(turtle.detectDown() == false) then
- turtle.select(15)
- turtle.placeDown()
- end
- end
- function ForwardUp()
- turtle.forward()
- if(turtle.detectUp() == false) then
- turtle.select(15)
- turtle.placeUp()
- end
- end
- function MoveUppest()
- turtle.up()
- if(turtle.detectUp() == false) then
- turtle.select(15)
- turtle.placeUp()
- end
- end
- function MoveLowest()
- turtle.down()
- if(turtle.detectDown() == false) then
- turtle.select(15)
- turtle.placeDown()
- end
- end
- function turn180()
- turtle.turnLeft()
- turtle.turnLeft()
- end
- function checkLeftBorder()
- turtle.turnLeft()
- checkFrontBorder()
- end
- function checkRightBorder()
- turtle.turnRight()
- checkFrontBorder()
- end
- function checkFrontBorder()
- if(turtle.detect() == false) then
- turtle.select(15)
- turtle.place()
- end
- end
- function placeTorch()
- if(torchCounter == torchPl) then
- turn180()
- turtle.forward()
- turtle.select(16)
- turtle.place()
- torchCounter = 0
- turn180()
- turtle.forward()
- else
- torchCounter = torchCounter + 1
- end
- end
- function checkItemsAndGoEmpty()
- haveToEmpty = 1
- for i = 1, 14, 1 do
- if (turtle.getItemCount(i) == 0) then
- haveToEmpty = 0
- end
- end
- if (haveToEmpty == 1) then
- BackToChest()
- BackToLayer()
- end
- end
- function refillCopple()
- local cnt = turtle.getItemCount(15)
- if cnt < 8 then
- for i=1, 15, 1 do
- turtle.select(i)
- local comp = turtle.compareTo(16)
- if comp == true then
- turtle.transferTo(16)
- end
- end
- end
- end
- function start()
- local input = 1
- shell.run("clear")
- while input == 1 do
- term.setCursorPos(1,1)
- print("Menu:")
- print("=======================================")
- term.setCursorPos(1,3)
- term.clearLine()
- print("Length of the tunnel: "..length)
- term.clearLine()
- term.setCursorPos(1,5)
- term.clearLine()
- print("Enter [S] for start or [C] for change settings - [Q] quit:")
- term.clearLine()
- local inputstring = read()
- if inputstring == 'S' or inputstring == 's' then
- if checkStartConditions() == 1 then
- run()
- end
- elseif inputstring == 'C' or inputstring == 'c' then
- setting()
- elseif inputstring == 'Q' or inputstring == 'q' then
- input = 0
- shell.run("clear")
- else
- term.setCursorPos(1,10)
- term.clear()
- print("Invalid Input")
- end
- end
- end
- function checkStartConditions()
- term.setCursorPos(1,10)
- term.clear()
- local retValue = 1
- local torchCount = turtle.getItemCount(16)
- local cobbleCount = turtle.getItemCount(15)
- if torchCount == 0 then
- print("No torches found!")
- retValue = 0
- else
- print("Number of found torches: "..torchCount)
- end
- if cobbleCount == 0 then
- print("No cobble stone found!")
- retValue = 0
- else
- print("Number of found cobble stone: "..cobbleCount)
- end
- if retValue == 0 then
- print("Start conditions not correct - please fill torches in slot 16 and cobblestone in slot 15")
- return 0
- else
- return 1
- end
- end
- function setting()
- local setting = 1
- local invalidCounter = 0
- shell.run("clear")
- while setting == 1 do
- term.setCursorPos(1,1)
- print("Setting:")
- print("=======================================")
- term.setCursorPos(1,3)
- term.clearLine()
- print("Actual using tunnel length: "..length)
- term.setCursorPos(1,5)
- term.clearLine()
- print("Enter the new length of the tunnel:")
- local inputstring = read()
- if(tonumber(inputstring) ~= nil) then
- length = tonumber(inputstring)
- setting = 0
- else
- term.setCursorPos(1,10)
- term.clear()
- print("Invalid Input")
- invalidCounter = invalidCounter + 1
- end
- if invalidCounter == 3 then
- setting = 0
- end
- end
- shell.run("clear")
- end
- function run()
- for i=1, length / 2, 1 do
- layerDig()
- end
- BackToChest()
- end
- start()
Advertisement
Add Comment
Please, Sign In to add comment