-- Einstellungen fuer das Loch
local length = 10 -- Laenge des Lochs
local width = 10 -- Breite des Lochs
local depth = 0 -- Start-Position in Z (wird von der aktuellen Position der Turtle uebernommen)
local fuelLevel = turtle.getFuelLevel() -- Initialer Treibstoffstand
-- Hilfsfunktionen
-- Bewegt die Turtle vorwaerts und graebt, wenn noetig
function moveForward()
while not turtle.forward() do
turtle.dig()
end
end
-- Graebt nach oben
function digUp()
turtle.digUp()
end
-- Graebt nach unten
function digDown()
turtle.digDown()
end
-- Prueft, ob das Inventar voll ist
function isFull()
for i = 1, 16 do
if turtle.getItemCount(i) == 0 then
return false
end
end
return true
end
-- Prueft, ob eine Kiste hinter der Turtle vorhanden ist
function checkForChest()
-- Turtle dreht sich nach hinten und untersucht die Umgebung
turtle.turnLeft()
turtle.turnLeft()
local success, data = turtle.inspect()
turtle.turnLeft()
turtle.turnLeft() -- Dreht die Turtle wieder zurueck
if success and data.name == "minecraft:chest" then
return true
end
return false
end
-- Entleert das Inventar in eine Kiste hinter der Turtle, wenn eine Kiste gefunden wurde
function emptyInventory()
if checkForChest() then
print("Kiste gefunden! Entleere Inventar...")
for i = 1, 15 do
turtle.select(i)
turtle.drop()
end
else
print("Keine Kiste gefunden, werfe Items auf den Boden...")
for i = 1, 15 do
turtle.select(i)
turtle.dropDown() -- Wirft die Items direkt nach unten
end
end
end
-- Tankt die Turtle, wenn der Treibstoff knapp wird
function refuel()
if turtle.getFuelLevel() < 50 then
print("Treibstoff niedrig, versuche zu tanken...")
for i = 1, 16 do
local item = turtle.getItemDetail(i)
if item and (item.name == "minecraft:coal" or item.name == "minecraft:charcoal") then
turtle.select(i)
turtle.refuel(1)
if turtle.getFuelLevel() >= 50 then
print("Treibstoff ausreichend!")
return
end
end
end
print("Nicht genug Treibstoff. Bitte fuege mehr hinzu.")
while turtle.getFuelLevel() < 50 do
sleep(5)
refuel()
end
end
end
-- Graebt das Loch in der aktuellen Blickrichtung
function digLayer()
-- Durchlaeuft die gesamte Laenge und Breite
for i = 1, length do
for j = 1, width do
digDown() -- Graebt nach unten
if j < width then
moveForward() -- Bewegt sich vorwaerts, ausser nach der letzten Spalte
end
end
-- Wenn das Ende einer Reihe erreicht ist, dreht sich die Turtle und wechselt die Richtung
if i < length then
if i % 2 == 0 then
turtle.turnRight()
moveForward()
turtle.turnRight()
else
turtle.turnLeft()
moveForward()
turtle.turnLeft()
end
end
end
end
-- Hauptfunktion
function main()
-- Initialisieren der Turtle
print("Starte das Mining-Programm!")
refuel()
-- Beginnt den Grabevorgang
for d = depth, 0, -1 do -- Graebt bis zum Bedrock
print("Graebe Schicht bei Tiefe: " .. d)
digLayer()
-- Wenn das Inventar voll ist, entleert es sich
if isFull() then
print("Inventar ist voll, gehe zur Kiste zum Entleeren.")
emptyInventory()
end
-- Bevor die Turtle mit der naechsten Schicht fortfaehrt, muss sie nach unten graeben
if d > 0 then
turtle.down()
depth = depth - 1
end
end
-- Fertig mit dem Graben
print("Das Loch wurde fertig ausgehoben!")
end
-- Programm starten
main()
Comments