View difference between Paste ID: HaJpUq64 and DqY4qFPA
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
			collect()
130
		else
131
			sleep( 0.5 )
132
		end
133
	end
134
	return true
135
end
136
137
local function tryBack()
138
	refuel()
139
	while not turtle.back() do
140
		if turtle.detect() then
141
			if not tryDig() then
142
				return false
143
			end
144
		elseif turtle.attack() then
145
			collect()
146
		else
147
			sleep( 0.5 )
148
		end
149
	end
150
	return true
151
end
152
153
print( " Fackeln in Slot 15 ")
154
print( "Tunnelling..." )
155
j=0
156
for n=1,length do
157
    pro = 100/length*n
158
	turtle.placeDown()
159
	tryDigUp()
160
	turtle.turnLeft()
161
	tryDig()
162-
		for u=1,6 do
162+
		for u=1,3 do
163
		tryUp()
164
		tryDig()
165
		end
166
	turtle.turnRight()
167
	turtle.turnRight()
168-
	tryForward()
168+
		for d=1,3 do
169-
		for d=1,6 do
169+
170
		tryDown()
171
		end
172
    tryDig()
173
	
174-
	tryBack()
174+
175
		if j == 5 then
176
		turtle.turnRight()
177
		turtle.select(15)
178
		turtle.place()
179
		turtle.turnLeft()
180
		j = 0
181
		end
182
	print(" Es sind bereits "..pro.." Prozent abgeschlossen")
183
	turtle.turnLeft()
184
        if n<length then
185
                tryDig()
186
                if not tryForward() then
187
                        print( "Aborting Tunnel." )
188
                        break
189
                end
190
        else
191
		turtle.up()
192
		turtle.turnLeft()
193
		turtle.turnLeft()
194
		for n=1,length do
195
			tryForward()
196
		end
197
                print( "Tunnel complete." )
198
        end
199
 
200
end
201
 
202
print( "Tunnel complete." )
203
print( "Mined "..collected.." items total." )