function Sicherheitspfad() if turtle.detectDown() == false then turtle.select(1) turtle.placeDown() end turtle.up if turtle.compareUp(1) == false then turtle.select(1) turtle.placeUp end turtle.turnLeft if turtle.compare(1) == false then turtle.select(1) turtle.place turtle.turnRight end turtle.turnRight if turtle.compare(1) == false then turtle.select(1) turtle.place end turtle.turnLeft turtle.down turtle.turnLeft if turtle.compare(1) == false then turtle.select(1) turtle.place turtle.turnRight end turtle.turnRight if turtle.compare(1) == false then turtle.select(1) turtle.place end turtle.turnLeft end end function Mittelgang() NachVorne() Sicherheitspfad() KiesUp() NachVorne() Sicherheitspfad() KiesUp() Fackel("mitte") NachVorne() Sicherheitspfad() KiesUp() end --start: baut einen Seitengang function Seitengang() for i = 1, laengeSeitengang, 1 do NachVorne() KiesUp() -- haut den block uebersich weg, koennt sein das dan noch kies nach faellt end turtle.turnRight() -- umdrehen turtle.turnRight() -- umdrehen for i = laengeSeitengang, 1, -1 do -- komm zur mitte zurueck if (i % fackelnSeitengang == 0 and fackelnSeitengang ~= 0) then -- wenn fackeln gesetzt werden sollen und diese dem abastand entsprechen Fackel("seite") end NachVorne() -- 1 block nach vorne mit der pruefung ob die Turel fahren konnte end end --end: baut einen Seitengang --start: geht 1 block nach vorne function NachVorne() while turtle.detect() do -- prueft ob ein block vor der turel ist turtle.dig() sleep(0.25) end while(turtle.forward() == false) do --wenn er nicht fahren konnte turtle.dig() -- einmal abbauen turtle.attack() -- einmal zuschlagen end end --end: geht 1 block nach vorne --start: beim abbauen uebersich ob kies nachfaell, wen ja solange abbauen bis nichts mehr kommt function KiesUp() while turtle.detectUp() do -- prueft ob ueber ihm noch etwas ist turtle.digUp() -- haut den block ueber sich ab sleep(0,50) -- wartet, funktioniert nur wen der block direck nachfaellt ist ein block end end --end: beim abbauen uebersich ob kis nachfaell, wen ja solange abbauen bis nichts mehr kommt --start: plaziert die Fackel function Fackel(gang) -- ueber gibt gang oder seite if (fakelanzahl1 ~= 0) then turtle.select(slotFackeln1) -- waehlt die Fackeln aus fakelanzahl1 = fakelanzahl1 - 1 elseif (fakelanzahl2 ~= 0) then slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste turtle.select(slotFackeln2) -- waehlt die Fackeln aus fakelanzahl2 = fakelanzahl2 - 1 elseif (fakelanzahl3 ~= 0) then slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste turtle.select(slotFackeln3) -- waehlt die Fackeln aus fakelanzahl3 = fakelanzahl3 - 1 else slotFackeln1 = 0 -- setzt die slotz zurueck zum entleeren der kiste slotFackeln2 = 0 -- setzt die slotz zurueck zum entleeren der kiste slotFackeln3 = 0 -- setzt die slotz zurueck zum entleeren der kiste return -- keine fackeln mehr mach nichts end if (gang == "seite") then turtle.placeUp() -- plaziert die Fackel ueber sich turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist else if (turtle.back()) then-- plaziert die fackel wen er 1 block zurueck fahren konnte turtle.placeUp() -- plaziert die Fackel ueber sich NachVorne() -- geht wieder nach vorne end end turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist end --end: plaziert die Fackel --start: Steuerung fuer Hauptgang und Seitengang function Strip() Mittelgang() -- hier wird der Hauptgang gegraben turtle.turnRight() -- startposition fuer die linke seite Seitengang() -- graebt den ersten seitengang und kommt zurueck zur mitte Seitengang() -- graebt den zweiten seitengang und kommt zurueck zur mitte end --end: Steuerung fuer Hauptgang und Seitengang --start: entleere das inventar in die endertruhe function enderTruhe() if (endertruhe == 0) then -- wen keine kiste ausgewaehlt ist nicht in endertruhe leeren return end while turtle.detect() do -- die Truhe braucht platz um hingestell werden zu koennen also wird solange gegraben bis platz da ist turtle.dig() sleep(0.5) end turtle.select(slotEndertruhe) -- Truhe auswaehlen turtle.place() -- Truhe plazieren for i = 1,16 do -- k dient hier als zaehler um jeden platz leer zu machen turtle.select(i) if (turtle.getItemCount(i) == 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then -- stop beachte die fackeln umzusetzend break -- hier wird abgebrochen wenn der slot leer ist -- eine schneller entladung der kist ist somit gegeben ^^ elseif (turtle.getItemCount(i) ~= 0 and i ~= slotEndertruhe and i ~= slotFackeln1 and i ~= slotFackeln2 and i ~= slotFackeln3) then turtle.drop() -- legt die items in aus dem slot in die truhe end end turtle.select(slotEndertruhe) -- waehlt slot 15 aus turtle.dig() -- und nimmt die truhe wieder auf turtle.select(1) -- waehlt wieder slot 1 oder den ersten der dan frei ist end --end: entleere das inventar in die endertruhe --start: graebt den Tunnel solange wie eingegeben wurde function tunnel() statusBildschirm(0) -- bereinigt den Bildschirm beim Start des Tunnelgrabens kistenabstand = entleerungEndertruhe -- nach diesem gang wird das 1 mal die truhe geleert for aktuellergang = 1, ganganzahl, 1 do -- schleife die soviele gaenge macht wie eingeben Strip() -- hier wird der hauptgang mit einem Tunnel links und rechts gegraben -- entwerder nur nach links drehen oder nach links drehen und die kiste setzten if (aktuellergang == kistenabstand and aktuellergang ~= ganganzahl) then turtle.turnLeft() -- gehe einmal nach links kistenabstand = kistenabstand + entleerungEndertruhe -- kistenabstand wieder 3 hoch enderTruhe() -- entleer die in die Enertrue elseif (aktuellergang == ganganzahl) then -- letzter gang nach rechts gehen und in die Truhe entlehren turtle.turnRight() -- zurueck in gang drehen fuer die fahrt zur Ausgangsposition enderTruhe() -- es war der letzte gang, sprich stell die kist das letzte mal und entleeren else turtle.turnLeft() -- gehe nur einmal nach lings und mach mit dem hauptgan weiter end statusBildschirm(aktuellergang) -- Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde (aktuellergang muss uebergeben werden) end end --end: graebt den Tunnel solange wie eingegeben wurde --start: Zurueck zur Ausgangsposition function back() for a = 1,ganganzahl * 3 do NachVorne() end end --end: Zurueck zur Ausgangsposition --start: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde function statusBildschirm(aktuellergang) -- start: Zeigt das Fuel-Level an term.setCursorPos( 1, 3) term.clearLine() fuellevel = turtle.getFuelLevel() print("Fuel-Level: " .. fuellevel) term.setCursorPos( 1, 4) term.clearLine() if (endertruhe == 1) then print("Endertruhe: Ja") else print("Endertruhe: Nein") end -- start: Zeigt die anzahl der Fakeln an term.setCursorPos( 1, 5) term.clearLine() fackeln = fakelanzahl1 + fakelanzahl2 + fakelanzahl3 print("Fackeln : " .. fackeln) term.setCursorPos(1,7) term.clearLine() if (aktuellergang > 0) then print("Gang " .. aktuellergang .. " von " .. ganganzahl .. " wurde fertiggestellt!") else -- wen das programm startet term.setCursorPos(1,8) term.clearLine() term.setCursorPos(1,9) term.clearLine() term.setCursorPos(1,10) term.clearLine() term.setCursorPos(1,12) term.clearLine() turtle.select(1) -- waehlt zum start slot 1 aus end end --end: Aktuallisierung des Bildschirms wenn ein Gang gegraben wurde --START: Programmsteuerung eingabe --start: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel local function checkStatus() slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"} slotsAnzeige[slotEndertruhe] = "e" slotsAnzeige[slotFackeln1] = "f" slotsAnzeige[slotFackeln2] = "f" slotsAnzeige[slotFackeln3] = "f" slotsAnzeige[slotAutofuel] = "a" local blink = 0 -- wird benoetigt fuer das blinken der Warnung das das Fuellevel nidrig ist while true do --prueft endlos den status time() -- zeit die Uhrzeit oben rechts an -- start: Zeigt das Fuel-Level an term.setCursorPos( 1, 3) term.clearLine() fuellevel = turtle.getFuelLevel() if (fuellevel < 500 and blink == 0) then print("Fuel-Level: " .. fuellevel .. " !! Warnung !!") blink = 1 -- setz blinken der Warnung zurueck else print("Fuel-Level: " .. fuellevel) blink = 0 -- setz blinken der Warnung zurueck end -- end: Zeigt das Fuel-Level an -- start: Zeigt die aufladung des Fuel-Level an term.setCursorPos( 1, 7) term.clearLine() term.clearLine() ladeeinheiten = turtle.getItemCount(tonumber(slotAutofuel)) -- Einheiten zum Aufladen aus slot 13 if (ladeeinheiten == 1) then print("Hinweis: !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4]) print("Fuelaufladung um eine Einheit !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8]) print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12]) print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16]) elseif (ladeeinheiten > 9) then print("Hinweis: !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4]) print("Fuelaufladung um " .. ladeeinheiten .. " Einheiten !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8]) print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12]) print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16]) elseif (ladeeinheiten > 1) then print("Hinweis: !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4]) print("Fuelaufladung um " .. ladeeinheiten .. " Einheiten !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8]) print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12]) print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16]) else print(" !".. slotsAnzeige[1] .. "!".. slotsAnzeige[2] .. "!".. slotsAnzeige[3] .. "!".. slotsAnzeige[4]) print(" !".. slotsAnzeige[5] .. "!".. slotsAnzeige[6] .. "!".. slotsAnzeige[7] .. "!".. slotsAnzeige[8]) print(" !".. slotsAnzeige[9] .. "!".. slotsAnzeige[10] .. "!".. slotsAnzeige[11] .. "!".. slotsAnzeige[12]) print(" !".. slotsAnzeige[13] .. "!".. slotsAnzeige[14] .. "!".. slotsAnzeige[15] .. "!".. slotsAnzeige[16]) end -- end: Zeigt die aufladung des Fuel-Level an -- start: Pruefung fuer die Endertruhe term.setCursorPos( 1, 4) term.clearLine() endertruhe = turtle.getItemCount(tonumber(slotEndertruhe)) if (endertruhe == 1) then print("Endertruhe: Ja") endertruhe = 1 --braucht man nicht ist nur zur sicherheit elseif (endertruhe > 1) then print("Endertruhe: Bitte nur 1 Kiste") endertruhe = 0 else print("Endertruhe: Nein") endertruhe = 0 end -- end: Pruefung fuer die Endertruhe -- start: Zeigt die anzahl der Fakeln an term.setCursorPos( 1, 5) term.clearLine() fackeln = turtle.getItemCount(tonumber(slotFackeln1)) + turtle.getItemCount(tonumber(slotFackeln2)) + turtle.getItemCount(tonumber(slotFackeln3)) if (fackeln == 0) then print("Fackeln : Keine") elseif (fackeln == 1) then print("Fackeln : " .. fackeln .. " (Eingabe 0 = ein Gang)") else print("Fackeln : " .. fackeln .. " (Eingabe 0=" .. fackeln .." Gaenge)") end -- end: Zeigt die anzahl der Fakeln an term.setCursorPos(38,3) print("!a") term.setCursorPos(38,4) print("!e") term.setCursorPos(38,5) print("!f") term.setCursorPos(36, 12) -- setzt angezeigte curser zurueck zur eingabe sleep(0.4) -- minecraft minute dauert 0.8 Sekunden end end --end: Aktuellisuerung des Status fuer Fakeln, Endertruhe, und Fullevel --start: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999 oder einstellungen local function eingabeTunnellaenge() while true do -- ergibt eine endlosschleife bis man auf return kommt term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Anzahl Gaenge? (e = Einstellungen):") -- anzeige des Hilfetextes term.setCursorPos(36, 12) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde ganganzahl = tonumber(inputstring) --macht aus dem Strin ein zahl if (ganganzahl >= 0 and ganganzahl <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (ganganzahl == 0) then ganganzahl = fackeln end einstellung = 0 return -- wenn alles ok ist, beende die eingabe end end if (inputstring == "e") then einstellung = 1 return -- einstellung aender else term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() print("0 = Fakelanzahl oder 1-999 moeglich") sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end end --end: Eingabe der Fackeln und Pruefung ob 0 oder zwischen 1 und 999 oder einstellungen --start: eingabe der einstellungen fuer das programm local function einstellungen() for i = 3, 10, 1 do -- loesch den bilschirm ab der dritten zeile term.setCursorPos(1,i) -- zeile fuer anzeige bereinigen term.clearLine() -- zeile fuer anzeige bereinigen end term.setCursorPos(1,12) -- zeile fuer anzeige bereinigen term.clearLine() -- zeile fuer anzeige bereinigen -- anzeige fuer die einstellungen term.setCursorPos(1, 3) -- setzt den curser in zeile 3 print("Slot Endertruhe : " .. slotEndertruhe) -- anzeige des Hilfetextes term.setCursorPos(1, 4) -- setzt den curser in zeile 3 print("Slot eins fuer Fackeln : " .. slotFackeln1) -- anzeige des Hilfetextes term.setCursorPos(1, 5) -- setzt den curser in zeile 3 print("Slot zwei fuer Fackeln : " .. slotFackeln2) -- anzeige des Hilfetextes term.setCursorPos(1, 6) -- setzt den curser in zeile 3 print("Slot drei fuer Fackeln : " .. slotFackeln3) -- anzeige des Hilfetextes term.setCursorPos(1, 7) -- setzt den curser in zeile 3 print("Slot Autofuelaufladung : " .. slotAutofuel) -- anzeige des Hilfetextes term.setCursorPos(1, 8) -- setzt den curser in zeile 3 print("Laenge der Seitengaenge: " .. laengeSeitengang) -- anzeige des Hilfetextes term.setCursorPos(1, 9) -- setzt den curser in zeile 3 print("Fakeln in Seitengaenge : " .. fackelnSeitengang) -- anzeige des Hilfetextes term.setCursorPos(1, 10) -- setzt den curser in zeile 3 print("Entleerung Enderchest : " .. entleerungEndertruhe) -- anzeige des Hilfetextes corsor = 3 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenEndertruhe() term.setCursorPos(1, 3) -- setzt den curser in zeile 3 print("Slot Endertruhe : " .. slotEndertruhe) -- anzeige des Hilfetextes corsor = 4 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenFackeln1() term.setCursorPos(1, 4) -- setzt den curser in zeile 3 print("Slot eins fuer Fackeln : " .. slotFackeln1) -- anzeige des Hilfetextes corsor = 5 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenFackeln2() term.setCursorPos(1, 5) -- setzt den curser in zeile 3 print("Slot zwei fuer Fackeln : " .. slotFackeln2) -- anzeige des Hilfetextes corsor = 6 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenFackeln3() term.setCursorPos(1, 6) -- setzt den curser in zeile 3 print("Slot drei fuer Fackeln : " .. slotFackeln3) -- anzeige des Hilfetextes corsor = 7 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenAutofuel() term.setCursorPos(1, 7) -- setzt den curser in zeile 3 print("Slot Autofuelaufladung : " .. slotAutofuel) -- anzeige des Hilfetextes corsor = 8 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenLaengeSeitengang() term.setCursorPos(1, 8) -- setzt den curser in zeile 3 print("Laenge der Seitengaenge: " .. laengeSeitengang) -- anzeige des Hilfetextes corsor = 9 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenFackelnSeitengang() term.setCursorPos(1, 9) -- setzt den curser in zeile 3 print("Fakeln in Seitengaenge : " .. fackelnSeitengang) -- anzeige des Hilfetextes corsor = 10 -- eingabeposition, wird gebraucht bei der zeitanzeige einstellungenEntleerungEnderchest() term.setCursorPos(1, 10) -- setzt den curser in zeile 3 print("Entleerung Enderchest : " .. entleerungEndertruhe) -- anzeige des Hilfetextes end --end: eingabe der einstellungen fuer das programm --start: eingabe der einstellungen fuer das programm function einstellungenEndertruhe() while true do -- ergibt eine endlosschleife bis man auf return kommt term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Slot fuer die Endertruhe") -- anzeige des Hilfetextes term.setCursorPos(1, 3) -- setzt den curser in zeile 3 term.clearLine() print("Slot Endertruhe :") -- anzeige des Hilfetextes term.setCursorPos(26, 3) -- setzt position auf eingabe local inputstring1 = read() -- auswertung der eingabe if (tonumber(inputstring1) ~= nil) then -- prueft ob eine Zahl eingegeben wurde slotEndertruhe = tonumber(inputstring1) --macht aus dem Strin ein zahl if (slotEndertruhe >= 0 and slotEndertruhe <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (slotEndertruhe == 0) then slotEndertruhe = 15 end return -- wenn alles ok ist, beende die eingabe end end term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() print("Nur Slot 1 bis 16 moeglich, 0=Standard") sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end --start: eingabe der einstellungen fuer das programm function einstellungenFackeln1() while true do -- ergibt eine endlosschleife bis man auf return kommt gleichslot = 0 -- erstmal keine ueberlagerung term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Slot eins fuer die Fackeln") -- anzeige des Hilfetextes term.setCursorPos(1, 4) -- setzt den curser in zeile 3 term.clearLine() print("Slot eins fuer Fackeln :") -- anzeige des Hilfetextes term.setCursorPos(26, 4) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde slotFackeln1 = tonumber(inputstring) --macht aus dem Strin ein zahl if (slotFackeln1 >= 0 and slotFackeln1 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (slotFackeln1 == 0) then slotFackeln1 = 16 end if (slotFackeln1 ~= slotEndertruhe) then -- gleicher slot wie die endertruhe return -- wenn alles ok ist, beende die eingabe else gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden end end end term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() if (gleichslot == 1) then print("Slot bereits in Verwendung") else print("Nur Slot 1 bis 16 moeglich, 0=Standard") end sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end --end: --start: eingabe der einstellungen fuer das programm function einstellungenFackeln2() while true do -- ergibt eine endlosschleife bis man auf return kommt gleichslot = 0 -- erstmal keine ueberlagerung term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Slot zwei fuer die Fackeln") -- anzeige des Hilfetextes term.setCursorPos(1, 5) -- setzt den curser in zeile 3 term.clearLine() print("Slot zwei fuer Fackeln :") -- anzeige des Hilfetextes term.setCursorPos(26, 5) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde slotFackeln2 = tonumber(inputstring) --macht aus dem Strin ein zahl if (slotFackeln2 >= 0 and slotFackeln2 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (slotFackeln2 == 0) then slotFackeln2 = 12 end if (slotFackeln2 ~= slotEndertruhe and slotFackeln2 ~= slotFackeln1) then -- gleicher slot wie die endertruhe return -- wenn alles ok ist, beende die eingabe else gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden end end end term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() if (gleichslot == 1) then print("Slot bereits in Verwendung") else print("Nur Slot 1 bis 16 moeglich, 0=Standard") end sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end --end: --start: eingabe der einstellungen fuer das programm function einstellungenFackeln3() while true do -- ergibt eine endlosschleife bis man auf return kommt term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Slot drei fuer die Fackeln") -- anzeige des Hilfetextes term.setCursorPos(1, 6) -- setzt den curser in zeile 3 term.clearLine() print("Slot drei fuer Fackeln :") -- anzeige des Hilfetextes term.setCursorPos(26, 6) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde slotFackeln3 = tonumber(inputstring) --macht aus dem Strin ein zahl if (slotFackeln3 >= 0 and slotFackeln3 <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (slotFackeln3 == 0) then slotFackeln3 = 8 end if (slotFackeln3 ~= slotEndertruhe and slotFackeln3 ~= slotFackeln1 and slotFackeln3 ~= slotFackeln2) then -- gleicher slot wie die endertruhe return -- wenn alles ok ist, beende die eingabe else gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden end end end term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() if (gleichslot == 1) then print("Slot bereits in Verwendung") else print("Nur Slot 1 bis 16 moeglich, 0=Standard") end sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end --end: --start: eingabe der einstellungen fuer das programm function einstellungenAutofuel() while true do -- ergibt eine endlosschleife bis man auf return kommt term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Slot fuer Autofuelaufladung beim Start") -- anzeige des Hilfetextes term.setCursorPos(1, 7) -- setzt den curser in zeile 3 term.clearLine() print("Slot Autofuelaufladung :") -- anzeige des Hilfetextes term.setCursorPos(26, 7) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde slotAutofuel = tonumber(inputstring) --macht aus dem Strin ein zahl if (slotAutofuel >= 0 and slotAutofuel <= 16) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (slotAutofuel == 0) then slotAutofuel = 13 end if (slotAutofuel ~= slotEndertruhe and slotAutofuel ~= slotFackeln1 and slotAutofuel ~= slotFackeln2 and slotAutofuel ~= slotFackeln3) then -- gleicher slot wie die endertruhe return -- wenn alles ok ist, beende die eingabe else gleichslot = 1 -- wen sich 2 slots ueberlagern wuerden end end end term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() if (gleichslot == 1) then print("Slot bereits in Verwendung") else print("Nur Slot 1 bis 16 moeglich, 0=Standard") end sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end --end: --start: eingabe der einstellungen fuer das programm function einstellungenLaengeSeitengang() while true do -- ergibt eine endlosschleife bis man auf return kommt term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Laenge eines Seitenganges") -- anzeige des Hilfetextes term.setCursorPos(1, 8) -- setzt den curser in zeile 3 term.clearLine() print("Laenge der Seitengaenge:") -- anzeige des Hilfetextes term.setCursorPos(26, 8) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde laengeSeitengang = tonumber(inputstring) --macht aus dem Strin ein zahl if (laengeSeitengang >= 0 and laengeSeitengang <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (laengeSeitengang == 0) then laengeSeitengang = 5 end return -- wenn alles ok ist, beende die eingabe end end term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() print("Nur 0 bis 999 moeglich, 0=Standard") sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end --end: --start: eingabe der einstellungen fuer das programm function einstellungenFackelnSeitengang() while true do -- ergibt eine endlosschleife bis man auf return kommt term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Abstand zwischen Fakeln im Seitengang") -- anzeige des Hilfetextes term.setCursorPos(1, 9) -- setzt den curser in zeile 3 term.clearLine() print("Fakeln in Seitengaenge :") -- anzeige des Hilfetextes term.setCursorPos(26, 9) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde fackelnSeitengang = tonumber(inputstring) --macht aus dem Strin ein zahl if (fackelnSeitengang <= laengeSeitengang) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (fackelnSeitengang == 0) then fackelnSeitengang = 0 end return -- wenn alles ok ist, beende die eingabe else term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() print("Seitenganz waere zu kurz") sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end end end --end: --start: eingabe der einstellungen fuer das programm function einstellungenEntleerungEnderchest() while true do -- ergibt eine endlosschleife bis man auf return kommt term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() -- loescht eventuell den Hilfetext term.setCursorPos(1, 12) -- setzt den curser hier her print("Anzahl Gaenge bis zur leerung") -- anzeige des Hilfetextes term.setCursorPos(1, 10) -- setzt den curser in zeile 3 term.clearLine() print("Entleerung Enderchest :") -- anzeige des Hilfetextes term.setCursorPos(26, 10) -- setzt position auf eingabe local inputstring = read() -- auswertung der eingabe if (tonumber(inputstring) ~= nil) then -- prueft ob eine Zahl eingegeben wurde entleerungEndertruhe = tonumber(inputstring) --macht aus dem Strin ein zahl if (entleerungEndertruhe >= 0 and entleerungEndertruhe <= 999) then -- wen die zahl zwischen 0 und 999 liegt alles ok if (entleerungEndertruhe == 0) then entleerungEndertruhe = 3 -- standard end return -- wenn alles ok ist, beende die eingabe end end term.setCursorPos(1, 12) -- setzt den curser hier her term.clearLine() print("Nur 0 bis 999 moeglich, 0=Standard") sleep(1.5) -- zeit fuer die anzeigt des Hilfetextets end end --end: --start: Uhrzeit und Tag in Minecraft auslesen und anzeigen function time() term.setCursorPos(1, 1) -- position auf Zeit setzten local day -- locale Variable fuer den Tag in Minecraft local zeit -- locale Variable fuer die Uhrzeit in Minecraft day = os.day() -- nicht im Gebrauch! zeit = textutils.formatTime(os.time(), true) -- wandelt die anzeige in das 24 Stunden Format if (string.len(zeit) == 4) then -- zeit Anzeigt vor oder nach 10 Uhr print("Systemhinweis Zeit: " .. zeit) -- vor 10 Uhr, es geht um die laenge else print("Systemhinweis Zeit: " .. zeit) -- nach 10 Uhr end end --end: Uhrzeit und Tag in Minecraft auslesen und anzeigen local function timeshow() while true do --prueft endlos den status term.setCursorPos(1, 1) -- position auf Zeit setzten local day -- locale Variable fuer den Tag in Minecraft local zeit -- locale Variable fuer die Uhrzeit in Minecraft day = os.day() -- nicht im Gebrauch! zeit = textutils.formatTime(os.time(), true) -- wandelt die anzeige in das 24 Stunden Format if (string.len(zeit) == 4) then -- zeit Anzeigt vor oder nach 10 Uhr print("Einstellungen Zeit: " .. zeit) -- vor 10 Uhr, es geht um die laenge else print("Einstellungen Zeit: " .. zeit) -- nach 10 Uhr end term.setCursorPos(26, corsor) -- setzt angezeigte curser zurueck zur eingabe sleep(0.4) -- minecraft minute dauert 0.8 Sekunden end end --end: Programmsteuerung eingabe --start: bereinigt den Bildschirm und baut das eingabe Fenster auf function bildschirmStart() shell.run("clear") -- löscht allties auf dem Bildschirm print("Systemhinweis") print("=======================================") term.setCursorPos(1,6) term.clearLine() print("---------------------------------------") term.setCursorPos(1,11) print("---------------------------------------") end --end: bereinigt den Bildschirm und baut das eingabe Fenster auf --start: zeigt an das die Turel fertig sit function zeigtFertig() term.setCursorPos(1,10) -- zeile 10 fuer anzeige bereinigen term.clearLine() -- zeile 10 fuer anzeige bereinigen print("!!!Fertig - Programm beendet!!!") -- fertig meldung term.setCursorPos(1,12) -- letzte zeile bereinigen term.clearLine() -- letzte zeile bereinigen end --end: zeigt an das die Turel fertig sit function einstellungenSpeichern() config = fs.open("strip.conf", "w") -- oeffent die config datei config.writeLine("slotEndertruhe = " .. slotEndertruhe) config.writeLine("slotFackeln1 = " .. slotFackeln1) config.writeLine("slotFackeln2 = " .. slotFackeln2) config.writeLine("slotFackeln3 = " .. slotFackeln3) config.writeLine("slotAutofuel = " .. slotAutofuel) config.writeLine("fackelnSeitengang = " .. fackelnSeitengang) config.writeLine("laengeSeitengang = " .. laengeSeitengang) config.writeLine("entleerungEndertruhe = " .. entleerungEndertruhe) config.close() -- schließt die einstellungen end function einstellungenLesen() config = fs.open("strip.conf", "r") if config then line = config.readLine() slotEndertruhe = tonumber(string.sub(line,24,30)) line = config.readLine() slotFackeln1 = tonumber(string.sub(line,24,30)) line = config.readLine() slotFackeln2 = tonumber(string.sub(line,24,30)) line = config.readLine() slotFackeln3 = tonumber(string.sub(line,24,30)) line = config.readLine() slotAutofuel = tonumber(string.sub(line,24,30)) line = config.readLine() fackelnSeitengang = tonumber(string.sub(line,24,30)) line = config.readLine() laengeSeitengang = tonumber(string.sub(line,24,30)) line = config.readLine() entleerungEndertruhe = tonumber(string.sub(line,24,30)) config.close() else slotEndertruhe = 15 -- Slot fuer die Endertruhe slotFackeln1 = 16 -- Slot fuer Fakeln 1 slotFackeln2 = 12 -- Slot fuer Fakeln 2 stop slotFackeln3 = 8 -- Slot fuer Fakeln 3 stop slotAutofuel = 13 -- Slot fuer Autofuel fackelnSeitengang = 0 -- fackeln im seitengang, 0=keine laengeSeitengang = 5 -- laenge des seitengangs 0 = 5 entleerungEndertruhe = 3 --nach wieielen gaengen wird die Endertruhe geleert, Standart 3 stop end end --**Hauptprogrammsteuerung --Setzen der globale Variablen (diese sind ueberall verfuegbar) endertruhe = 0 -- Endertruhe = nein fackeln = 0 -- Fackeln = 0 ganganzahl = 0 -- Anzahl Gaenge = 0 fuellevel = 0 -- Fuel-Level = 0 einstellung = 0 -- keine einstellungen vornehmen slotEndertruhe = 0 -- Slot fuer die Endertruhe slotFackeln1 = 0 -- Slot fuer Fakeln 1 slotFackeln2 = 0 -- Slot fuer Fakeln 2 stop slotFackeln3 = 0 -- Slot fuer Fakeln 3 stop fakelanzahl1 = 0 -- anzahl der fakeln in slot 1 nach dem start fakelanzahl2 = 0 -- anzahl der fakeln in slot 2 nach dem start fakelanzahl3 = 0 -- anzahl der fakeln in slot 3 nach dem start slotAutofuel = 0 -- Slot fuer Autofuel fackelnSeitengang = 0 -- fackeln im seitengang, 0=keine laengeSeitengang = 0 -- laenge des seitengangs 0 = 5 entleerungEndertruhe = 0 -- nach wieielen gaengen wird die Endertruhe geleert, Standart 3 slotsAnzeige = {"_","_","_","_","_","_","_","_","_","_","_","_","_","_","_","_"} corsor = 0 -- line of the cursor -- bereinigt den Bildschirm und baut das eingabe Fenster auf bildschirmStart() einstellungenLesen() -- fuerht 2 funktionen gleichzeitig aus, eingab und aktuellisuerung der Fakeln, Endertruhe, und Fullevel parallel.waitForAny(eingabeTunnellaenge, checkStatus) while (einstellung == 1) do parallel.waitForAny(einstellungen,timeshow) -- bearbeitung der einstellung einstellungenSpeichern() bildschirmStart() einstellungenLesen() parallel.waitForAny(eingabeTunnellaenge, checkStatus) end --Laed die Turtel vor dem start wieder auf wen etwas in slot 13 abgelegt wurde und merke die fakeln turtle.select(slotAutofuel) -- Slot 13 auswaehlen turtle.refuel(turtle.getItemCount(slotAutofuel)) -- auffuellung mit der anzahl Items in Slot 13 fakelanzahl1 = turtle.getItemCount(slotFackeln1) fakelanzahl2 = turtle.getItemCount(slotFackeln2) fakelanzahl3 = turtle.getItemCount(slotFackeln3) -- hier wird der tunnel gegraben if (ganganzahl ~= 0) then -- mach das nur wen du auch wirklich was gemacht hast tunnel() -- vielleicht so oder doch ueber einen extra status anzeige back() -- hier komm die turtel wieder zurueck zum ausgangspunkt end --zeit an das die Turtel fertig ist zeigtFertig()