Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local tunnelLength = 0
- local tunnelDepth = 0
- local curIter = 1
- local curx = 0
- local cury = 0
- local curz = 0
- local dir = 1 -- 1=Forward, 2=Right, 3=Back & 4=Left
- local itemCount = 1
- local function toInt(value)
- return math.floor(tonumber(value) or error("Could not cast '" .. tostring(value) .. "' to number.'"))
- end
- local function forward()
- if turtle.forward() == false then
- if turtle.getFuelLevel() == 0 then
- write("No fuel left, refuel")
- return -1
- else
- write("Blocked")
- return 0
- end
- else
- if dir == 1 then curx = curx + 1 end
- if dir == 2 then cury = cury + 1 end
- if dir == 3 then curx = curx - 1 end
- if dir == 4 then cury = cury - 1 end
- end
- return 1
- end
- local function back()
- if turtle.back() == false then
- if turtle.getFuelLevel() == 0 then
- write("No fuel left, refuel")
- return -1
- else
- write("Blocked")
- return 0
- end
- else
- if dir == 1 then curx = curx - 1 end
- if dir == 2 then cury = cury - 1 end
- if dir == 3 then curx = curx + 1 end
- if dir == 4 then cury = cury + 1 end
- end
- return 1
- end
- local function up()
- if turtle.up() == false then
- if turtle.getFuelLevel() == 0 then
- write("No fuel left, refuel")
- return -1
- else
- write("Blocked")
- return 0
- end
- else
- curz = curz + 1
- end
- return 1
- end
- local function down()
- if turtle.down() == false then
- if turtle.getFuelLevel() == 0 then
- write("No fuel left, refuel")
- return -1
- else
- write("Blocked")
- return 0
- end
- else
- curz = curz - 1
- end
- return 1
- end
- local function left()
- if turtle.left() == false then
- return 0
- else
- dir = dir - 1
- if dir < 1 then dir = 4 end
- return 1
- end
- end
- local function right()
- if turtle.right() == false then
- return 0
- else
- dir = dir + 1
- if dir > 4 then dir = 1 end
- return 1
- end
- end
- local function dig()
- if turtle.dig() == false then
- return 0
- else
- return 1
- end
- end
- local function digUp()
- if turtle.digUp() == false then
- return 0
- else
- return 1
- end
- end
- local function digDown()
- if turtle.digDown() == false then
- return 0
- else
- return 1
- end
- end
- print("Please specify tunnel length:")
- tunnelLength = toInt(read())
- print("Please specify tunnel depth:")
- tunnelDepth = toInt(read())
- write("Digging down")
- curIter = 1
- while curIter <= tunnelDepth do
- digDown()
- down()
- curIter = curIter + 1
- end
- write("Tunnelling")
- curIter = 1
- while curIter <= tunnelLength do
- dig()
- forward()
- digDown()
- if itemCount < 6 then
- turtle.select(5)
- turtle.placeDown()
- itemCount = itemCount + 1
- else
- write("Placing powered rail...")
- turtle.select(6)
- turtle.placeDown()
- itemCount = 1
- end
- curIter = curIter + 1
- end
- write("Digging to surface")
- while turtle.detectUp() == true do
- digUp()
- up()
- end
- write("Going back down")
- while curz > (0 - tunnelDepth) do
- down()
- end
- write("Moving back")
- curIter = 1
- while curIter <= tunnelLength do
- back()
- curIter = curIter + 1
- end
- write("Moving up")
- curIter = 1
- while curIter <= tunnelDepth do
- up()
- curIter = curIter + 1
- end
- write("Complete")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement