View difference between Paste ID: cztgeyn9 and 6gF24P4W
SHOW: | | - or go back to the newest paste.
1
function moveForward(times)
2
    if times then
3
        for i = 1, times do
4
            while not turtle.forward() do
5
                turtle.dig()
6
            end
7
        end
8
    else
9
        while not turtle.forward() do
10
            turtle.dig()
11
        end
12
    end
13
end
14
15
function moveUp(times)  
16
    if times then
17
        for i = 1, times do
18
            while not turtle.up() do
19
                turtle.digUp()
20
            end
21
        end
22
    else
23
        while not turtle.up() do
24
            turtle.digUp()
25
        end
26
    end
27
end
28
29
function moveDown(times)  
30
    if times then
31
        for i = 1, times do
32
            while not turtle.down() do
33
                turtle.digDown()
34
            end
35
        end
36
    else
37
        while not turtle.down() do
38
            turtle.digDown()
39
        end
40
    end
41
end
42
43
-- Location needs to be a vector.
44
function moveToLocation(location)
45
46
    local startingPosition = 0
47
    local currentPosition = 0
48
49
    if gps.locate(2 , false) then
50
        startingPosition = vector.new(gps.locate(2 , false))
51
        currentPosition = startingPosition
52
53
        -- Y Movement
54
        if currentPosition.y > location.y then
55
            -- We need to move down.
56
            while currentPosition.y ~= location.y do
57
                moveDown()
58
                currentPosition = vector.new(gps.locate(2 , false))
59
            end
60
        else
61
            -- We need to move up.
62
            while currentPosition.y ~= location.y do
63
                moveUp()
64
                currentPosition = vector.new(gps.locate(2 , false))
65
            end
66
        end
67
68
        turtle.forward()
69
        currentPosition = vector.new(gps.locate(2 , false))
70
71
        local difference = startingPosition - currentPosition
72
73
        local moving = ""
74
75
        if difference.x == -1 then
76
            -- East
77
            moving = "east"
78
        elseif difference.x == 1 then
79
            -- West
80
            moving = "west"
81
        end
82
83
        if difference.z == -1 then
84
            -- South
85
            moving = "south"
86
        elseif difference.z == 1 then
87
            -- North
88
            moving = "north"
89
        end
90
91
        -- X Movement
92
        if currentPosition.x > location.x then
93
            -- We need to move West, to let's face that direction relative to the current facting direciton.
94
            if moving == "south" then
95
                turtle.turnRight()
96
            elseif moving == "north" then
97
                turtle.turnLeft()
98
            elseif moving == "east" then
99
                turtle.turnRight()
100
                turtle.turnRight()
101
            end
102
103
            moving = "west"
104
105
            while currentPosition.x ~= location.x do
106
                moveForward()
107
                currentPosition = vector.new(gps.locate(2 , false))
108
                print(moving)
109
            end
110
        else
111
            -- We need to move East, to let's face that direction relative to the current facting direciton.
112
            if moving == "south" then
113
                turtle.turnLeft()
114
            elseif moving == "north" then
115
                turtle.turnRight()
116
            elseif moving == "west" then
117
                turtle.turnRight()
118
                turtle.turnRight()
119
            end
120
121
            moving = "east"
122
123
            while currentPosition.x ~= location.x do
124
                moveForward()
125
                currentPosition = vector.new(gps.locate(2 , false))
126
                print(moving)
127
            end
128
        end
129
130
        -- Z Movement
131
        if currentPosition.z > location.z then
132
            -- We need to move North, to let's face that direction relative to the current facting direciton.
133
            if moving == "south" then
134
                turtle.turnRight()
135
                turtle.turnRight()
136
            elseif moving == "west" then
137
                turtle.turnRight()
138
            elseif moving == "east" then
139
                turtle.turnLeft()
140
            end
141
142
            moving = "north"
143
144
            while currentPosition.z ~= location.z do
145
                moveForward()
146
                currentPosition = vector.new(gps.locate(2 , false))
147
                print(moving)
148
            end
149
        else
150
            -- We need to move South, to let's face that direction relative to the current facting direciton.
151
            if moving == "north" then
152
                turtle.turnRight()
153
                turtle.turnRight()
154
            elseif moving == "west" then
155
                turtle.turnLeft()
156
            elseif moving == "east" then
157
                turtle.turnRight()
158
            end
159
160
            moving = "south"
161
162
            while currentPosition.z ~= location.z do
163
                moveForward()
164
                currentPosition = vector.new(gps.locate(2 , false))
165
                print(moving)
166
            end
167
        end 
168
169
    else
170
        print("Could not get turtle's location.")
171
        return
172
    end
173
end
174
175
-- rednet.open("right")
176
177
-- moveToLocation(vector.new(536, 64, -1))