gur111 icon

Untitled

gur111 | PRO | 11/05/17 10:29:51 PM UTC | 0 ⭐ | 631 👁️ | Never ⏰ | []
text |

3.29 KB

|

None

|

0 👍

/

0 👎

local size = 4
local posX, posY, posZ
local direction = 0
posX = 0
posY = 0
posZ = 0
 function up()
    while(not turtle.up()) do
        turtle.digUp()
        turtle.attackUp()
    end
    posZ = posZ-1
end
 function forward()
    while(not turtle.forward()) do
        local succ, data = turtle.inspect()
        if(succ and data.name == "minecraft:bedrock") then
            goBack()
            return
        end
        turtle.dig()
        turtle.attack()
    end
    updateXY(1)
end
function updateXY(dist)
    if(direction == 0) then posX = posX+dist
    elseif(direction == 1) then posY = posY+dist
    elseif(direction == 2) then posX = posX-dist
    elseif(direction == 3) then posY = posY-dist
    else print("invalid direction") end
end
 function turnStart()
    if(posX>0) then
        while(direction ~= 2) do
            turnLeft()
        end
    elseif(posY>0) then
        while(direction ~= 3) do
            turnLeft()
        end
    elseif(posX<0) then
        while(direction ~= 0) do
            turnLeft()
        end
    elseif(posY<0) then
        while(direction ~= 0) do
            turnLeft()
        end
    else
        return false
    end
    return true
end
 function goBack()
    print("Going back")
    while(posZ > 0) do up() end
    while(turnStart()) do
        go()    
    end
    while(direction ~= 0) do turnRight() end
end
  function down()
    while(turtle.attackDown()) do end
    if(turtle.detectDown()) then
	if(not turtle.digDown()) then
	    goBack()
	    return
	end
    end
    turtle.down()
    posZ = posZ+1
end
 function go()
    --print(posX..","..posY..","..posZ)
    local succ, data = turtle.inspect()
    if(succ and data.name == "minecraft:bedrock") then
        goBack()
        return
    end
    while(turtle.detect()) do
        turtle.dig()
    end
    while(turtle.detectUp()) do
        turtle.digUp()
    end
    if(turtle.detectDown()) then
        turtle.digDown()
    end
    while(turtle.attack()) do end
     if(not turtle.forward()) then
        print("Can't move. Going home...")
        goBack()
    else
        updateXY(1)
    end
end
 function turnRight()
    turtle.turnRight()
    direction = (direction+1)%4
end
 function turnLeft()
    turtle.turnLeft()
    direction = (direction-1)%4
end
   local status, data = turtle.inspectDown()
 while(not status or data.name ~= "minecraft:bedrock" and posZ < 10) do
    print("New Layer")
    for i = 0, size-1 do
	print("row: "..i)
        for j = 0, size-2, 1 do
            go()
        end
        if(i+1 ~= size) then
            if( i%2 == 0) then
                turnRight()
                go()
                turnRight()
            else
                turnLeft()
                go()
                turnLeft()
            end
	else
	    print("End layer")
	   -- os.sleep(10)
            if(size%2==0) then
		print("turn right only. Mod is 0")
                turnRight()
            else
		print("U turn mod isn't 1")
                turnLeft()
		turnLeft()
            end
        end
    end
    status, data = turtle.inspectDown()
    if (not status or data.name ~= "minecraft:bedrock" and posZ < 10) then
	down()
	down()
	down()
    end
end
goBack()

Comments