View difference between Paste ID: WUbpwr3j and rXUc493m
SHOW: | | - or go back to the newest paste.
1
-- ** Stripmining Programm **
2
-- ** © 2013 SemOnLP       **
3
-- **************************
4
-- Changelog
5
-- 09.09.13 - V1.0 = Veroeffentlicht
6
-- 12.02.14 - V2.0 = Einstellungen speichern, neue Anzeige
7
-- 23.07.14 - V2.1 = Fehler beim Fackeln setzten im Seitengang
8
9
--start: block der verhindert das der hautpfad unterborchen wird
10
function Sicherheitspfad()
11
	if turtle.detectDown() == false then -- wen kein block unter der turel ist
12
		turtle.select(1) -- slot 1 auswaehlen
13
    	turtle.placeDown() -- und unter die turel setzten
14
	end
15
end
16
--end: block der verhindert das der hautpfad unterborchen wird
17
18
--start: hier wird der Hauptgang gegraben
19
function Mittelgang()
20
	NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
21
	Sicherheitspfad() -- wird nur im Hauptgang gemacht, prueft ob unter der Turtel ein Block ist wen nein setzt sie einen aus slot 1
22
	KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
23
24
25
end
26
--end: hier wird der Hauptgang gegraben
27
28-
	Fackel("mitte") -- fackel auf der rechten seite setzten
28+
29
function Seitengang()
30
	for i = 1, laengeSeitengang, 1 do -- grabe dich in den gang
31
		NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
32
		KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt
33
	end
34
	
35
	turtle.turnRight() -- umdrehen
36
	turtle.turnRight() -- umdrehen
37
	for i = laengeSeitengang, 1, -1 do -- komm zur mitte zurueck
38
		if (i % fackelnSeitengang == 0 and fackelnSeitengang ~= 0) then -- wenn fackeln gesetzt werden sollen und diese dem abastand entsprechen 
39
			Fackel("seite")
40
		end
41
		NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte
42
	end
43
end
44
--end: baut einen Seitengang
45
46
--start: geht 1 block nach vorne
47
function NachVorne()
48
	while turtle.detect() do -- prueft ob ein block vor der turel ist
49
		turtle.dig()
50
		sleep(0.25)
51
	end
52
	
53
	while(turtle.forward() == false) do --wenn er nicht fahren konnte
54
		turtle.dig()  -- einmal abbauen
55
		turtle.attack() -- einmal zuschlagen
56
	end
57
end
58
--end: geht 1 block nach vorne
59
60
--start: beim abbauen uebersich ob kies nachfaell, wen ja solange abbauen bis nichts mehr kommt
61
function KiesUp()
62
	while turtle.detectUp() do -- prueft ob ueber ihm noch etwas ist 
63
		turtle.digUp() -- haut den block ueber sich ab
64
		sleep(0.25) -- wartet, funktioniert nur wen der block direck nachfaellt ist ein block 
65
	end
66
end
67
--end: beim abbauen uebersich ob kis nachfaell, wen ja solange abbauen bis nichts mehr kommt
68
69
--start: plaziert die Fackel
70
function Fackel(gang) -- ueber gibt gang oder seite
71
	if (fakelanzahl1 ~= 0) then
72
		turtle.select(slotFackeln1) -- waehlt die Fackeln aus
73
		fakelanzahl1 = fakelanzahl1 - 1
74
	elseif (fakelanzahl2 ~= 0) then
75
		slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
76
		turtle.select(slotFackeln2) -- waehlt die Fackeln aus
77
		fakelanzahl2 = fakelanzahl2 - 1
78
	elseif (fakelanzahl3 ~= 0) then
79
		slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
80
		slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste
81
		turtle.select(slotFackeln3) -- waehlt die Fackeln aus
82
		fakelanzahl3 = fakelanzahl3 - 1
83
	else
84
		slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste
85
		slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste
86
		slotFackeln3 = 0 -- setzt die slotz zurueck zum entleeren der kiste
87
		return -- keine fackeln mehr mach nichts
88
	end
89
	
90
	if (gang == "seite") then
91
			turtle.placeUp() -- plaziert die Fackel ueber sich
92
			turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
93
	else	
94
		if (turtle.back()) then-- plaziert die fackel wen er 1 block zurueck fahren konnte
95
			turtle.placeUp() -- plaziert die Fackel ueber sich
96
			NachVorne() -- geht wieder nach vorne
97
		end
98
	end
99
	turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
100
end
101
--end: plaziert die Fackel
102
103
--start: Steuerung fuer Hauptgang und Seitengang
104
function Strip()
105
	Mittelgang() -- hier wird der Hauptgang gegraben
106
	turtle.turnRight() -- startposition fuer die linke seite 
107
	Seitengang() -- graebt den ersten seitengang und kommt zurueck zur mitte
108
	Seitengang() -- graebt den zweiten seitengang und kommt zurueck zur mitte
109
end
110
--end: Steuerung fuer Hauptgang und Seitengang
111
112
--start: entleere das inventar in die endertruhe
113
function enderTruhe()
114
	if (endertruhe == 0) then -- wen keine kiste ausgewaehlt ist nicht in endertruhe leeren
115
		return
116
	end
117
	while turtle.detect() do -- die Truhe braucht platz um hingestell werden zu koennen also wird solange gegraben bis platz da ist
118
		turtle.dig()
119
		sleep(0.5)
120
	end
121
	turtle.select(slotEndertruhe) -- Truhe auswaehlen
122
	turtle.place() -- Truhe plazieren
123
	for i = 1,16 do -- k dient hier als zaehler um jeden platz leer zu machen
124
		turtle.select(i)
125
		if (turtle.getItemCount(i) == 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then -- stop beachte die fackeln umzusetzend
126
			break -- hier wird abgebrochen wenn der slot leer ist 
127
			      -- eine schneller entladung der kist ist somit gegeben ^^
128
		elseif (turtle.getItemCount(i) ~= 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then
129
			turtle.drop() -- legt die items in aus dem slot in die truhe
130
		end
131
	end
132
	turtle.select(slotEndertruhe) -- waehlt slot 15 aus 
133
	turtle.dig() -- und nimmt die truhe wieder auf
134
	turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist
135
end
136
--end: entleere das inventar in die endertruhe
137
138
--start: graebt den Tunnel solange wie eingegeben wurde
139
function tunnel()
140
	statusBildschirm(0) -- bereinigt den Bildschirm beim Start des Tunnelgrabens
141
	kistenabstand = entleerungEndertruhe  -- nach diesem gang wird das 1 mal die truhe geleert
142
	for aktuellergang = 1, ganganzahl, 1 do -- schleife die soviele gaenge macht wie eingeben
143
		Strip() -- hier wird der hauptgang mit einem Tunnel links und rechts gegraben
144
		-- entwerder nur nach links drehen oder nach links drehen und die kiste setzten
145
		if (aktuellergang  == kistenabstand and aktuellergang ~= ganganzahl) then
146
			turtle.turnLeft() -- gehe einmal nach links 
147
			kistenabstand = kistenabstand + entleerungEndertruhe -- kistenabstand wieder 3 hoch
148
			enderTruhe() -- entleer die in die Enertrue
149
		elseif (aktuellergang  == ganganzahl) then -- letzter gang nach rechts gehen und in die Truhe entlehren
150
			turtle.turnRight() -- zurueck in gang drehen fuer die fahrt zur Ausgangsposition
151
			enderTruhe() -- es war der letzte gang, sprich stell die kist das letzte mal und entleeren
152
		else 
153
			turtle.turnLeft() -- gehe nur einmal nach lings und mach mit dem hauptgan weiter
154
		end
155
		statusBildschirm(aktuellergang) -- Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde (aktuellergang muss uebergeben werden)
156
	end
157
end
158
--end: graebt den Tunnel solange wie eingegeben wurde
159
160
--start: Zurueck zur Ausgangsposition
161
function back()
162
	for a = 1,ganganzahl * 3 do
163
		NachVorne()
164
	end
165
end
166
--end: Zurueck zur Ausgangsposition
167
168
--start: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
169
function statusBildschirm(aktuellergang)
170
	-- start: Zeigt das Fuel-Level an
171
	term.setCursorPos( 1, 3)
172
	term.clearLine()
173
	fuellevel = turtle.getFuelLevel()
174
	print("Fuel-Level: " .. fuellevel)
175
	
176
	term.setCursorPos( 1, 4)
177
	term.clearLine()
178
	if (endertruhe == 1) then
179
		print("Endertruhe: Ja")
180
	else
181
		print("Endertruhe: Nein")
182
	end		
183
	
184
	-- start: Zeigt die anzahl der Fakeln an
185
	term.setCursorPos( 1, 5)
186
	term.clearLine()
187
	fackeln = fakelanzahl1 + fakelanzahl2 + fakelanzahl3
188
	print("Fackeln   : " .. fackeln)
189
	
190
	term.setCursorPos(1,7)
191
	term.clearLine()
192
	if (aktuellergang > 0) then
193
		print("Gang " .. aktuellergang .. " von " .. ganganzahl .. " wurde fertiggestellt!")
194
	else -- wen das programm startet
195
		term.setCursorPos(1,8)
196
		term.clearLine()
197
		term.setCursorPos(1,9)
198
		term.clearLine()
199
		term.setCursorPos(1,10)
200
		term.clearLine()
201
		term.setCursorPos(1,12)
202
		term.clearLine()
203
		turtle.select(1) -- waehlt zum start slot 1 aus
204
	end
205
end
206
--end: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde
207
208
209
--START: Programmsteuerung eingabe
210
--start: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel
211
local function checkStatus()
212
	slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"}
213
	slotsAnzeige[slotEndertruhe] = "e"
214
	slotsAnzeige[slotFackeln1] = "f"
215
	slotsAnzeige[slotFackeln2] = "f"
216
	slotsAnzeige[slotFackeln3] = "f"
217
	slotsAnzeige[slotAutofuel] = "a"
218
	
219
	local blink = 0 -- wird benoetigt fuer das blinken der Warnung das das Fuellevel nidrig ist
220
	while true do --prueft endlos den status
221
		time() -- zeit die Uhrzeit oben rechts an
222
223
		-- start: Zeigt das Fuel-Level an
224
		term.setCursorPos( 1, 3)
225
		term.clearLine()
226
		fuellevel = turtle.getFuelLevel()
227
		if (fuellevel < 500 and blink == 0) then
228
  			print("Fuel-Level: " .. fuellevel .. " !! Warnung !!")
229
  			blink = 1 -- setz blinken der Warnung zurueck
230
		else
231
			print("Fuel-Level: " .. fuellevel)
232
			blink = 0 -- setz blinken der Warnung zurueck
233
		end
234
		-- end: Zeigt das Fuel-Level an
235
		-- start: Zeigt die aufladung des Fuel-Level an
236
		term.setCursorPos( 1, 7)
237
		term.clearLine()
238
		term.clearLine()
239
		ladeeinheiten = turtle.getItemCount(tonumber(slotAutofuel)) -- Einheiten zum Aufladen aus slot 13
240
		if (ladeeinheiten == 1) then
241
			print("Hinweis:                       !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
242
			print("Fuelaufladung um eine Einheit  !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
243
			print("                               !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
244
			print("                               !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
245
		elseif (ladeeinheiten > 9) then 
246
			print("Hinweis:                       !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
247
			print("Fuelaufladung um " .. ladeeinheiten .. " Einheiten  !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
248
			print("                               !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
249
			print("                               !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
250
		elseif (ladeeinheiten > 1) then 
251
			print("Hinweis:                       !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
252
			print("Fuelaufladung um " .. ladeeinheiten .. " Einheiten   !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
253
			print("                               !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
254
			print("                               !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
255
		else
256
			print("                               !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4])
257
			print("                               !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8])
258
			print("                               !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12])
259
			print("                               !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16])
260
		end
261
		-- end: Zeigt die aufladung des Fuel-Level an
262
		
263
		-- start: Pruefung fuer die Endertruhe
264
		term.setCursorPos( 1, 4)
265
		term.clearLine()
266
		endertruhe = turtle.getItemCount(tonumber(slotEndertruhe))
267
		if (endertruhe == 1) then
268
			print("Endertruhe: Ja")
269
			endertruhe = 1 --braucht man nicht ist nur zur sicherheit
270
		elseif (endertruhe > 1) then
271
			print("Endertruhe: Bitte nur 1 Kiste")
272
			endertruhe = 0
273
		else
274
			print("Endertruhe: Nein")
275
			endertruhe = 0
276
		end		
277
		-- end: Pruefung fuer die Endertruhe
278
		
279
		-- start: Zeigt die anzahl der Fakeln an
280
		term.setCursorPos( 1, 5)
281
		term.clearLine()
282
		fackeln = turtle.getItemCount(tonumber(slotFackeln1)) + turtle.getItemCount(tonumber(slotFackeln2)) + turtle.getItemCount(tonumber(slotFackeln3))
283
		if (fackeln == 0) then
284
			print("Fackeln   : Keine")
285
		elseif (fackeln == 1) then
286
			print("Fackeln   : " .. fackeln .. " (Eingabe 0 = ein Gang)")
287
		else
288
			print("Fackeln   : " .. fackeln .. " (Eingabe 0=" .. fackeln .." Gaenge)")
289
		end
290
		-- end: Zeigt die anzahl der Fakeln an
291
		
292
		term.setCursorPos(38,3)
293
		print("!a")
294
		term.setCursorPos(38,4)
295
		print("!e")
296
		term.setCursorPos(38,5)
297
		print("!f")
298
		term.setCursorPos(36, 12) -- setzt angezeigte curser zurueck zur eingabe
299
		sleep(0.4) -- minecraft minute dauert 0.8 Sekunden 
300
	end
301
end
302
--end: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel
303
304
--start: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999 oder einstellungen
305
local function eingabeTunnellaenge()
306
	while true do -- ergibt eine endlosschleife bis man auf return kommt
307
		term.setCursorPos(1, 12) -- setzt den curser hier her
308
		term.clearLine() -- loescht eventuell den Hilfetext
309
		term.setCursorPos(1, 12) -- setzt den curser hier her
310
		print("Anzahl Gaenge? (e = Einstellungen):") -- anzeige des Hilfetextes
311
		                       
312
		term.setCursorPos(36, 12) -- setzt position auf eingabe
313
		
314
		local inputstring = read() -- auswertung der eingabe
315
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
316
		   	ganganzahl = tonumber(inputstring) --macht aus dem Strin ein zahl
317
			if (ganganzahl >= 0 and ganganzahl <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok
318
				if (ganganzahl == 0) then 
319
					ganganzahl = fackeln
320
			    end
321
				einstellung = 0
322
				return -- wenn alles ok ist, beende die eingabe
323
			end
324
		end
325
326
		if (inputstring == "e") then
327
			einstellung = 1
328
			return -- einstellung aender
329
		else
330
			term.setCursorPos(1, 12) -- setzt den curser hier her
331
			term.clearLine()
332
			print("0 = Fakelanzahl oder 1-999 moeglich")
333
			sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
334
		end
335
	end
336
end
337
--end: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999 oder einstellungen
338
339
--start: eingabe der einstellungen fuer das programm
340
local function einstellungen()
341
	for i = 3, 10, 1 do -- loesch den bilschirm ab der dritten zeile
342
		term.setCursorPos(1,i) -- zeile fuer anzeige bereinigen 
343
		term.clearLine() -- zeile fuer anzeige bereinigen 
344
	end
345
	
346
	term.setCursorPos(1,12) -- zeile fuer anzeige bereinigen 
347
	term.clearLine() -- zeile fuer anzeige bereinigen 
348
	
349
	
350
	-- anzeige fuer die einstellungen
351
	term.setCursorPos(1, 3) -- setzt den curser in zeile 3
352
	print("Slot Endertruhe        : " .. slotEndertruhe) -- anzeige des Hilfetextes
353
	term.setCursorPos(1, 4) -- setzt den curser in zeile 3
354
	print("Slot eins fuer Fackeln : " .. slotFackeln1) -- anzeige des Hilfetextes
355
	term.setCursorPos(1, 5) -- setzt den curser in zeile 3
356
	print("Slot zwei fuer Fackeln : " .. slotFackeln2) -- anzeige des Hilfetextes
357
	term.setCursorPos(1, 6) -- setzt den curser in zeile 3
358
	print("Slot drei fuer Fackeln : " .. slotFackeln3) -- anzeige des Hilfetextes
359
	term.setCursorPos(1, 7) -- setzt den curser in zeile 3
360
	print("Slot Autofuelaufladung : " .. slotAutofuel) -- anzeige des Hilfetextes
361
	term.setCursorPos(1, 8) -- setzt den curser in zeile 3
362
	print("Laenge der Seitengaenge: " .. laengeSeitengang) -- anzeige des Hilfetextes
363
	term.setCursorPos(1, 9) -- setzt den curser in zeile 3
364
	print("Fakeln in Seitengaenge : " .. fackelnSeitengang) -- anzeige des Hilfetextes
365
	term.setCursorPos(1, 10) -- setzt den curser in zeile 3
366
	print("Entleerung Enderchest  : " .. entleerungEndertruhe) -- anzeige des Hilfetextes
367
	
368
	corsor = 3 -- eingabeposition, wird gebraucht bei der zeitanzeige
369
	einstellungenEndertruhe()
370
	term.setCursorPos(1, 3) -- setzt den curser in zeile 3
371
	print("Slot Endertruhe        : " .. slotEndertruhe) -- anzeige des Hilfetextes
372
	
373
	corsor = 4 -- eingabeposition, wird gebraucht bei der zeitanzeige
374
	einstellungenFackeln1()
375
	term.setCursorPos(1, 4) -- setzt den curser in zeile 3
376
	print("Slot eins fuer Fackeln : " .. slotFackeln1) -- anzeige des Hilfetextes
377
	
378
	corsor = 5 -- eingabeposition, wird gebraucht bei der zeitanzeige
379
	einstellungenFackeln2()
380
	term.setCursorPos(1, 5) -- setzt den curser in zeile 3
381
	print("Slot zwei fuer Fackeln : " .. slotFackeln2) -- anzeige des Hilfetextes
382
	
383
	corsor = 6 -- eingabeposition, wird gebraucht bei der zeitanzeige
384
	einstellungenFackeln3()
385
	term.setCursorPos(1, 6) -- setzt den curser in zeile 3
386
	print("Slot drei fuer Fackeln : " .. slotFackeln3) -- anzeige des Hilfetextes
387
	
388
	corsor = 7 -- eingabeposition, wird gebraucht bei der zeitanzeige
389
	einstellungenAutofuel()
390
	term.setCursorPos(1, 7) -- setzt den curser in zeile 3
391
	print("Slot Autofuelaufladung : " .. slotAutofuel) -- anzeige des Hilfetextes
392
	
393
	corsor = 8 -- eingabeposition, wird gebraucht bei der zeitanzeige
394
	einstellungenLaengeSeitengang()
395
	term.setCursorPos(1, 8) -- setzt den curser in zeile 3
396
	print("Laenge der Seitengaenge: " .. laengeSeitengang) -- anzeige des Hilfetextes
397
	
398
	corsor = 9 -- eingabeposition, wird gebraucht bei der zeitanzeige
399
	einstellungenFackelnSeitengang()
400
	term.setCursorPos(1, 9) -- setzt den curser in zeile 3
401
	print("Fakeln in Seitengaenge : " .. fackelnSeitengang) -- anzeige des Hilfetextes
402
	
403
	corsor = 10 -- eingabeposition, wird gebraucht bei der zeitanzeige
404
	einstellungenEntleerungEnderchest()
405
	term.setCursorPos(1, 10) -- setzt den curser in zeile 3
406
	print("Entleerung Enderchest  : " .. entleerungEndertruhe) -- anzeige des Hilfetextes
407
end
408
409
--end: eingabe der einstellungen fuer das programm
410
411
--start: eingabe der einstellungen fuer das programm
412
function einstellungenEndertruhe()
413
	while true do -- ergibt eine endlosschleife bis man auf return kommt
414
		term.setCursorPos(1, 12) -- setzt den curser hier her
415
		term.clearLine() -- loescht eventuell den Hilfetext
416
		term.setCursorPos(1, 12) -- setzt den curser hier her
417
		print("Slot fuer die Endertruhe") -- anzeige des Hilfetextes
418
		
419
		term.setCursorPos(1, 3) -- setzt den curser in zeile 3
420
		term.clearLine()
421
		print("Slot Endertruhe        :") -- anzeige des Hilfetextes
422
		term.setCursorPos(26, 3) -- setzt position auf eingabe
423
		
424
		
425
		local inputstring1 = read() -- auswertung der eingabe
426
		if (tonumber(inputstring1) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
427
		   	slotEndertruhe = tonumber(inputstring1) --macht aus dem Strin ein zahl
428
			if (slotEndertruhe >= 0 and slotEndertruhe <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
429
				if (slotEndertruhe == 0) then 
430
					slotEndertruhe = 15
431
			    end
432
				return -- wenn alles ok ist, beende die eingabe
433
			end
434
		end
435
436
		term.setCursorPos(1, 12) -- setzt den curser hier her
437
		term.clearLine()
438
		print("Nur Slot 1 bis 16 moeglich, 0=Standard")
439
		sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
440
	end
441
end
442
443
--start: eingabe der einstellungen fuer das programm
444
function einstellungenFackeln1()
445
	while true do -- ergibt eine endlosschleife bis man auf return kommt
446
		gleichslot = 0 -- erstmal keine ueberlagerung
447
		term.setCursorPos(1, 12) -- setzt den curser hier her
448
		term.clearLine() -- loescht eventuell den Hilfetext
449
		term.setCursorPos(1, 12) -- setzt den curser hier her
450
		print("Slot eins fuer die Fackeln") -- anzeige des Hilfetextes
451
		
452
		term.setCursorPos(1, 4) -- setzt den curser in zeile 3
453
		term.clearLine()
454
		print("Slot eins fuer Fackeln :") -- anzeige des Hilfetextes
455
		term.setCursorPos(26, 4) -- setzt position auf eingabe
456
		
457
		
458
		local inputstring = read() -- auswertung der eingabe
459
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
460
		   	slotFackeln1 = tonumber(inputstring) --macht aus dem Strin ein zahl
461
			if (slotFackeln1 >= 0 and slotFackeln1 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
462
				if (slotFackeln1 == 0) then 
463
					slotFackeln1 = 16
464
				end
465
466
				if (slotFackeln1 ~= slotEndertruhe) then -- gleicher slot wie die endertruhe
467
					return -- wenn alles ok ist, beende die eingabe
468
				else
469
					gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
470
				end
471
			end
472
		end
473
474
475
		term.setCursorPos(1, 12) -- setzt den curser hier her
476
		term.clearLine()
477
		if (gleichslot == 1) then
478
			print("Slot bereits in Verwendung")
479
		else
480
			print("Nur Slot 1 bis 16 moeglich, 0=Standard")
481
		end
482
		sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
483
	end
484
end
485
--end: 
486
--start: eingabe der einstellungen fuer das programm
487
function einstellungenFackeln2()
488
	while true do -- ergibt eine endlosschleife bis man auf return kommt
489
		gleichslot = 0 -- erstmal keine ueberlagerung
490
		term.setCursorPos(1, 12) -- setzt den curser hier her
491
		term.clearLine() -- loescht eventuell den Hilfetext
492
		term.setCursorPos(1, 12) -- setzt den curser hier her
493
		print("Slot zwei fuer die Fackeln") -- anzeige des Hilfetextes
494
		
495
		term.setCursorPos(1, 5) -- setzt den curser in zeile 3
496
		term.clearLine()
497
		print("Slot zwei fuer Fackeln :") -- anzeige des Hilfetextes
498
		term.setCursorPos(26, 5) -- setzt position auf eingabe
499
		
500
		
501
		local inputstring = read() -- auswertung der eingabe
502
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
503
		   	slotFackeln2 = tonumber(inputstring) --macht aus dem Strin ein zahl
504
			if (slotFackeln2 >= 0 and slotFackeln2 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
505
				if (slotFackeln2 == 0) then 
506
					slotFackeln2 = 12
507
			    end
508
				
509
				if (slotFackeln2 ~= slotEndertruhe and slotFackeln2 ~= slotFackeln1) then -- gleicher slot wie die endertruhe
510
					return -- wenn alles ok ist, beende die eingabe
511
				else
512
					gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
513
				end
514
			end
515
		end
516
517
		term.setCursorPos(1, 12) -- setzt den curser hier her
518
		term.clearLine()
519
		if (gleichslot == 1) then
520
			print("Slot bereits in Verwendung")
521
		else
522
			print("Nur Slot 1 bis 16 moeglich, 0=Standard")
523
		end
524
		sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
525
	end
526
end
527
--end: 
528
--start: eingabe der einstellungen fuer das programm
529
function einstellungenFackeln3()
530
	while true do -- ergibt eine endlosschleife bis man auf return kommt
531
		term.setCursorPos(1, 12) -- setzt den curser hier her
532
		term.clearLine() -- loescht eventuell den Hilfetext
533
		term.setCursorPos(1, 12) -- setzt den curser hier her
534
		print("Slot drei fuer die Fackeln") -- anzeige des Hilfetextes
535
		
536
		term.setCursorPos(1, 6) -- setzt den curser in zeile 3
537
		term.clearLine()
538
		print("Slot drei fuer Fackeln :") -- anzeige des Hilfetextes
539
		term.setCursorPos(26, 6) -- setzt position auf eingabe
540
		
541
		
542
		local inputstring = read() -- auswertung der eingabe
543
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
544
		   	slotFackeln3 = tonumber(inputstring) --macht aus dem Strin ein zahl
545
			if (slotFackeln3 >= 0 and slotFackeln3 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
546
				if (slotFackeln3 == 0) then 
547
					slotFackeln3 = 8
548
			    end
549
				if (slotFackeln3 ~= slotEndertruhe and slotFackeln3 ~= slotFackeln1 and slotFackeln3 ~= slotFackeln2) then -- gleicher slot wie die endertruhe
550
					return -- wenn alles ok ist, beende die eingabe
551
				else
552
					gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
553
				end
554
			end
555
		end
556
557
		term.setCursorPos(1, 12) -- setzt den curser hier her
558
		term.clearLine()
559
		if (gleichslot == 1) then
560
			print("Slot bereits in Verwendung")
561
		else
562
			print("Nur Slot 1 bis 16 moeglich, 0=Standard")
563
		end
564
		sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
565
	end
566
end
567
--end: 
568
569
--start: eingabe der einstellungen fuer das programm
570
function einstellungenAutofuel()
571
	while true do -- ergibt eine endlosschleife bis man auf return kommt
572
		term.setCursorPos(1, 12) -- setzt den curser hier her
573
		term.clearLine() -- loescht eventuell den Hilfetext
574
		term.setCursorPos(1, 12) -- setzt den curser hier her
575
		print("Slot fuer Autofuelaufladung beim Start") -- anzeige des Hilfetextes
576
		
577
		term.setCursorPos(1, 7) -- setzt den curser in zeile 3
578
		term.clearLine()
579
		print("Slot Autofuelaufladung :") -- anzeige des Hilfetextes
580
		term.setCursorPos(26, 7) -- setzt position auf eingabe
581
		
582
		
583
		local inputstring = read() -- auswertung der eingabe
584
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
585
		   	slotAutofuel = tonumber(inputstring) --macht aus dem Strin ein zahl
586
			if (slotAutofuel >= 0 and slotAutofuel <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok
587
				if (slotAutofuel == 0) then 
588
					slotAutofuel = 13
589
			    end
590
				if (slotAutofuel ~= slotEndertruhe and slotAutofuel ~= slotFackeln1 and slotAutofuel ~= slotFackeln2 and slotAutofuel ~= slotFackeln3) then -- gleicher slot wie die endertruhe
591
					return -- wenn alles ok ist, beende die eingabe
592
				else
593
					gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden
594
				end
595
			end
596
		end
597
598
		term.setCursorPos(1, 12) -- setzt den curser hier her
599
		term.clearLine()
600
		if (gleichslot == 1) then
601
			print("Slot bereits in Verwendung")
602
		else
603
			print("Nur Slot 1 bis 16 moeglich, 0=Standard")
604
		end
605
		sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
606
	end
607
end
608
--end: 
609
610
611
--start: eingabe der einstellungen fuer das programm
612
function einstellungenLaengeSeitengang()
613
	while true do -- ergibt eine endlosschleife bis man auf return kommt
614
		term.setCursorPos(1, 12) -- setzt den curser hier her
615
		term.clearLine() -- loescht eventuell den Hilfetext
616
		term.setCursorPos(1, 12) -- setzt den curser hier her
617
		print("Laenge eines Seitenganges") -- anzeige des Hilfetextes
618
		
619
		term.setCursorPos(1, 8) -- setzt den curser in zeile 3
620
		term.clearLine()
621
		print("Laenge der Seitengaenge:") -- anzeige des Hilfetextes
622
		term.setCursorPos(26, 8) -- setzt position auf eingabe
623
		
624
		
625
		local inputstring = read() -- auswertung der eingabe
626
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
627
		   	laengeSeitengang = tonumber(inputstring) --macht aus dem Strin ein zahl
628
			if (laengeSeitengang >= 0 and laengeSeitengang <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok
629
				if (laengeSeitengang == 0) then 
630
					laengeSeitengang = 5
631
			    end
632
				return -- wenn alles ok ist, beende die eingabe
633
			end
634
		end
635
636
		term.setCursorPos(1, 12) -- setzt den curser hier her
637
		term.clearLine()
638
		print("Nur 0 bis 999 moeglich, 0=Standard")
639
		sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
640
	end
641
end
642
--end: 
643
644
--start: eingabe der einstellungen fuer das programm
645
function einstellungenFackelnSeitengang()
646
	while true do -- ergibt eine endlosschleife bis man auf return kommt
647
		term.setCursorPos(1, 12) -- setzt den curser hier her
648
		term.clearLine() -- loescht eventuell den Hilfetext
649
		term.setCursorPos(1, 12) -- setzt den curser hier her
650
		print("Abstand zwischen Fakeln im Seitengang") -- anzeige des Hilfetextes
651
		
652
		term.setCursorPos(1, 9) -- setzt den curser in zeile 3
653
		term.clearLine()
654
		print("Fakeln in Seitengaenge :") -- anzeige des Hilfetextes
655
		term.setCursorPos(26, 9) -- setzt position auf eingabe
656
		
657
		
658
		local inputstring = read() -- auswertung der eingabe
659
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
660
		   	fackelnSeitengang = tonumber(inputstring) --macht aus dem Strin ein zahl
661
			if (fackelnSeitengang <= laengeSeitengang) then -- wen die zahl zwischen 0 und 999 liegt alles ok
662
				if (fackelnSeitengang == 0) then 
663
					fackelnSeitengang = 0
664
			    end
665
				return -- wenn alles ok ist, beende die eingabe
666
			else
667
				term.setCursorPos(1, 12) -- setzt den curser hier her
668
				term.clearLine()
669
				print("Seitenganz waere zu kurz")
670
				sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
671
			end
672
		end	
673
	end
674
end
675
--end: 
676
677
--start: eingabe der einstellungen fuer das programm
678
function einstellungenEntleerungEnderchest()
679
	while true do -- ergibt eine endlosschleife bis man auf return kommt
680
		term.setCursorPos(1, 12) -- setzt den curser hier her
681
		term.clearLine() -- loescht eventuell den Hilfetext
682
		term.setCursorPos(1, 12) -- setzt den curser hier her
683
		print("Anzahl Gaenge bis zur leerung") -- anzeige des Hilfetextes
684
		
685
		term.setCursorPos(1, 10) -- setzt den curser in zeile 3
686
		term.clearLine()
687
		print("Entleerung Enderchest  :") -- anzeige des Hilfetextes
688
		term.setCursorPos(26, 10) -- setzt position auf eingabe
689
		
690
		
691
		local inputstring = read() -- auswertung der eingabe
692
		if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde
693
		   	entleerungEndertruhe = tonumber(inputstring) --macht aus dem Strin ein zahl
694
			if (entleerungEndertruhe >= 0 and entleerungEndertruhe <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok
695
				if (entleerungEndertruhe == 0) then 
696
					entleerungEndertruhe = 3 -- standard
697
			    end
698
				return -- wenn alles ok ist, beende die eingabe
699
			end
700
		end
701
702
		term.setCursorPos(1, 12) -- setzt den curser hier her
703
		term.clearLine()
704
		print("Nur 0 bis 999 moeglich, 0=Standard")
705
		sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets
706
	end
707
end
708
--end: 
709
710
711
--start: Uhrzeit und Tag in Minecraft auslesen und anzeigen
712
function time()
713
	term.setCursorPos(1, 1) -- position auf Zeit setzten
714
	local day -- locale Variable fuer den Tag in Minecraft
715
	local zeit -- locale Variable fuer die Uhrzeit in Minecraft
716
	day = os.day() -- nicht im Gebrauch!
717
	zeit = textutils.formatTime(os.time(), true) -- wandelt die anzeige in das 24 Stunden Format
718
	if (string.len(zeit) == 4) then -- zeit Anzeigt vor oder nach 10 Uhr
719
		print("Systemhinweis               Zeit:  " .. zeit) -- vor 10 Uhr, es geht um die laenge
720
	else
721
		print("Systemhinweis               Zeit: " .. zeit) -- nach 10 Uhr
722
	end
723
end
724
--end: Uhrzeit und Tag in Minecraft auslesen und anzeigen
725
local function timeshow()
726
	while true do --prueft endlos den status
727
		term.setCursorPos(1, 1) -- position auf Zeit setzten
728
		local day -- locale Variable fuer den Tag in Minecraft
729
		local zeit -- locale Variable fuer die Uhrzeit in Minecraft
730
		day = os.day() -- nicht im Gebrauch!
731
		zeit = textutils.formatTime(os.time(), true) -- wandelt die anzeige in das 24 Stunden Format
732
		if (string.len(zeit) == 4) then -- zeit Anzeigt vor oder nach 10 Uhr
733
			print("Einstellungen               Zeit:  " .. zeit) -- vor 10 Uhr, es geht um die laenge
734
		else
735
			print("Einstellungen               Zeit: " .. zeit) -- nach 10 Uhr
736
		end
737
		 
738
		term.setCursorPos(26, corsor) -- setzt angezeigte curser zurueck zur eingabe
739
		sleep(0.4) -- minecraft minute dauert 0.8 Sekunden 
740
	end
741
end
742
743
--end: Programmsteuerung eingabe
744
745
--start: bereinigt den Bildschirm und baut das eingabe Fenster auf
746
function bildschirmStart()
747
	shell.run("clear") -- löscht allties auf dem Bildschirm
748
	print("Systemhinweis")
749
	print("=======================================")
750
	term.setCursorPos(1,6)
751
	term.clearLine()
752
	print("---------------------------------------")
753
	term.setCursorPos(1,11)
754
	print("---------------------------------------")
755
end
756
--end: bereinigt den Bildschirm und baut das eingabe Fenster auf
757
758
--start: zeigt an das die Turel fertig sit
759
function zeigtFertig()
760
	term.setCursorPos(1,10) -- zeile 10 fuer anzeige bereinigen 
761
	term.clearLine() -- zeile 10 fuer anzeige bereinigen 
762
	print("!!!Fertig - Programm beendet!!!") -- fertig meldung
763
	term.setCursorPos(1,12) -- letzte zeile bereinigen 
764
	term.clearLine() -- letzte zeile bereinigen 
765
end
766
--end: zeigt an das die Turel fertig sit
767
768
function einstellungenSpeichern()
769
	config = fs.open("strip.conf", "w") -- oeffent die config datei
770
	config.writeLine("slotEndertruhe       = " .. slotEndertruhe)
771
	config.writeLine("slotFackeln1         = " .. slotFackeln1)
772
	config.writeLine("slotFackeln2         = " .. slotFackeln2)
773
	config.writeLine("slotFackeln3         = " .. slotFackeln3)
774
	config.writeLine("slotAutofuel         = " .. slotAutofuel)
775
	config.writeLine("fackelnSeitengang    = " .. fackelnSeitengang) 
776
	config.writeLine("laengeSeitengang     = " .. laengeSeitengang) 
777
	config.writeLine("entleerungEndertruhe = " .. entleerungEndertruhe)
778
	config.close() -- schließt die einstellungen
779
end
780
781
782
function einstellungenLesen()
783
	config = fs.open("strip.conf", "r")
784
	if config then
785
		line = config.readLine()
786
		slotEndertruhe = tonumber(string.sub(line,24,30))
787
		line = config.readLine()
788
		slotFackeln1 = tonumber(string.sub(line,24,30))
789
		line = config.readLine()
790
		slotFackeln2 = tonumber(string.sub(line,24,30))
791
		line = config.readLine()
792
		slotFackeln3 = tonumber(string.sub(line,24,30))
793
		line = config.readLine()
794
		slotAutofuel = tonumber(string.sub(line,24,30))
795
		line = config.readLine()
796
		fackelnSeitengang = tonumber(string.sub(line,24,30))
797
		line = config.readLine()
798
		laengeSeitengang = tonumber(string.sub(line,24,30))
799
		line = config.readLine()
800
		entleerungEndertruhe = tonumber(string.sub(line,24,30))
801
		config.close()
802
	else
803
		slotEndertruhe = 15 -- Slot fuer die Endertruhe
804
		slotFackeln1 = 16    -- Slot fuer Fakeln 1
805
		slotFackeln2 = 12    -- Slot fuer Fakeln 2 stop
806
		slotFackeln3 = 8    -- Slot fuer Fakeln 3 stop
807
		slotAutofuel = 13    -- Slot fuer Autofuel
808
		fackelnSeitengang = 0 -- fackeln im seitengang, 0=keine
809
		laengeSeitengang = 5  -- laenge des seitengangs 0 = 5
810
		entleerungEndertruhe = 3 --nach wieielen gaengen wird die Endertruhe geleert, Standart 3    stop
811
	end
812
end
813
814
815
--**Hauptprogrammsteuerung
816
--Setzen der globale Variablen (diese sind ueberall verfuegbar)
817
endertruhe = 0           -- Endertruhe = nein
818
fackeln = 0              -- Fackeln = 0
819
ganganzahl = 0           -- Anzahl Gaenge = 0
820
fuellevel = 0            -- Fuel-Level = 0
821
einstellung = 0          -- keine einstellungen vornehmen
822
slotEndertruhe = 0       -- Slot fuer die Endertruhe
823
slotFackeln1 = 0         -- Slot fuer Fakeln 1
824
slotFackeln2 = 0         -- Slot fuer Fakeln 2 stop
825
slotFackeln3 = 0         -- Slot fuer Fakeln 3 stop
826
fakelanzahl1 = 0         -- anzahl der fakeln in slot 1 nach dem start
827
fakelanzahl2 = 0         -- anzahl der fakeln in slot 2 nach dem start
828
fakelanzahl3 = 0         -- anzahl der fakeln in slot 3 nach dem start
829
slotAutofuel = 0         -- Slot fuer Autofuel
830
fackelnSeitengang = 0    -- fackeln im seitengang, 0=keine
831
laengeSeitengang = 0     -- laenge des seitengangs 0 = 5
832
entleerungEndertruhe = 0 -- nach wieielen gaengen wird die Endertruhe geleert, Standart 3
833
slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"}
834
corsor = 0               -- line of the cursor
835
-- bereinigt den Bildschirm und baut das eingabe Fenster auf
836
bildschirmStart()
837
einstellungenLesen()
838
-- fuerht 2 funktionen gleichzeitig aus, eingab und aktuellisuerung der Fakeln, Endertruhe, und Fullevel
839
840
parallel.waitForAny(eingabeTunnellaenge, checkStatus) 
841
while (einstellung == 1) do
842
	parallel.waitForAny(einstellungen,timeshow) -- bearbeitung der einstellung
843
	einstellungenSpeichern()
844
	bildschirmStart()
845
	einstellungenLesen()
846
	parallel.waitForAny(eingabeTunnellaenge, checkStatus) 
847
end
848
849
--Laed die Turtel vor dem start wieder auf wen etwas in slot 13 abgelegt wurde und merke die fakeln
850
turtle.select(slotAutofuel) -- Slot 13 auswaehlen
851
turtle.refuel(turtle.getItemCount(slotAutofuel)) -- auffuellung mit der anzahl Items in Slot 13
852
853
fakelanzahl1 = turtle.getItemCount(slotFackeln1)
854
fakelanzahl2 = turtle.getItemCount(slotFackeln2)
855
fakelanzahl3 = turtle.getItemCount(slotFackeln3)
856
857
858
-- hier wird der tunnel gegraben
859
if (ganganzahl ~= 0) then -- mach das nur wen du auch wirklich was gemacht hast
860
	tunnel() -- vielleicht so oder doch ueber einen extra status anzeige
861
	back() -- hier komm die turtel wieder zurueck zum ausgangspunkt
862
end
863
--zeit an das die Turtel fertig ist
864
zeigtFertig()