View difference between Paste ID: DqY4qFPA and FZHTGpn9
SHOW: | | - or go back to the newest paste.
1
local tArgs = { ... }
2
if #tArgs ~= 1 then
3
	print( "Usage: tunnel <length>" )
4
	return
5
end
6
7
-- Mine in a quarry pattern until we hit something we can't dig
8
local length = tonumber( tArgs[1] )
9
if length < 1 then
10
	print( "Tunnel length must be positive" )
11
	return
12
end
13
	
14
local depth = length
15
local collected = 0
16
17
local function collect()
18
	collected = collected + 1
19
	if math.fmod(collected, 25) == 0 then
20
		print( "Mined "..collected.." items." )
21
	end
22
end
23
24
local function tryDig()
25
	while turtle.detect() do
26
		if turtle.dig() then
27
			collect()
28
			sleep(0.5)
29
		else
30
			return false
31
		end
32
	end
33
	return true
34
end
35
36
local function tryDigUp()
37
	while turtle.detectUp() do
38
		if turtle.digUp() then
39
			collect()
40
			sleep(0.5)
41
		else
42
			return false
43
		end
44
	end
45
	return true
46
end
47
48
local function refuel()
49
	local fuelLevel = turtle.getFuelLevel()
50
	if fuelLevel == "unlimited" or fuelLevel > 0 then
51
		return
52
	end
53
	
54
	local function tryRefuel()
55
		for n=1,16 do
56
			if turtle.getItemCount(n) > 0 then
57
				turtle.select(n)
58
				if turtle.refuel(1) then
59
					turtle.select(1)
60
					return true
61
				end
62
			end
63
		end
64
		turtle.select(1)
65
		return false
66
	end
67
	
68
	if not tryRefuel() then
69
		print( "Add more fuel to continue." )
70
		while not tryRefuel() do
71
			sleep(1)
72
		end
73
		print( "Resuming Tunnel." )
74
	end
75
end
76
77
local function tryUp()
78
	refuel()
79
	while not turtle.up() do
80
		if turtle.detectUp() then
81
			if not tryDigUp() then
82
				return false
83
			end
84
		elseif turtle.attackUp() then
85
			collect()
86
		else
87
			sleep( 0.5 )
88
		end
89
	end
90
	return true
91
end
92
93
local function tryDigDown()
94
        while turtle.detectDown() do
95
                if turtle.digDown() then
96
                        collect()
97
                        sleep(0.5)
98
                else
99
                        return false
100
                end
101
        end
102
        return true
103
end
104
105
local function tryDown()
106
	refuel()
107
	while not turtle.down() do
108
		if turtle.detectDown() then
109
			if not tryDigDown() then
110
				return false
111
			end
112
		elseif turtle.attackDown() then
113
			collect()
114
		else
115
			sleep( 0.5 )
116
		end
117
	end
118
	return true
119
end
120
121
local function tryForward()
122
	refuel()
123
	while not turtle.forward() do
124
		if turtle.detect() then
125
			if not tryDig() then
126
				return false
127
			end
128
		elseif turtle.attack() then
129-
        pro = 100/length*n
129+
130
		else
131
			sleep( 0.5 )
132
		end
133
	end
134-
	tryUp()
134+
135-
        tryDig()
135+
136-
        tryUp()
136+
137
local function tryBack()
138
	refuel()
139
	while not turtle.back() do
140
		if turtle.detect() then
141-
	tryDown()
141+
142
				return false
143-
        tryDown()
143+
144-
        tryDig()
144+
145-
	j = j+1
145+
146-
	if j == 5 then
146+
147-
	    turtle.turnRight()
147+
148-
	    turtle.select(15)
148+
149-
	    turtle.place()
149+
150-
	    turtle.turnLeft()
150+
151-
	    j = 0
151+
152
153
print( " Fackeln in Slot 15 ")
154
print( "Tunnelling..." )
155
j=0
156-
	if n<length then
156+
157
    pro = 100/length*n
158-
		if not tryForward() then
158+
159-
			print( "Aborting Tunnel." )
159+
160-
			break
160+
161
	tryDig()
162-
	else
162+
		for u=1,6 do
163-
		print( "Tunnel complete." )
163+
		tryUp()
164
		tryDig()
165
		end
166
	turtle.turnRight()
167
	turtle.turnRight()
168
	tryForward()
169
		for d=1,6 do
170
		tryDig()
171
		tryDown()
172
		end
173
    tryDig()
174
	tryBack()
175
		j = j+1
176
		if j == 5 then
177
		turtle.turnRight()
178
		turtle.select(15)
179
		turtle.place()
180
		turtle.turnLeft()
181
		j = 0
182
		end
183
	print(" Es sind bereits "..pro.." Prozent abgeschlossen")
184
	turtle.turnLeft()
185
        if n<length then
186
                tryDig()
187
                if not tryForward() then
188
                        print( "Aborting Tunnel." )
189
                        break
190
                end
191
        else
192
		turtle.up()
193
		turtle.turnLeft()
194
		turtle.turnLeft()
195
		for n=1,length do
196
			tryForward()
197
		end
198
                print( "Tunnel complete." )
199
        end
200
 
201
end
202
 
203
print( "Tunnel complete." )
204
print( "Mined "..collected.." items total." )