--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()
Comments