chico0991 icon

Mine

chico0991 | 09/02/25 11:33:03 PM UTC (Edited) | 0 ⭐ | 379 👁️ | Never ⏰ | []
Lua |

4.05 KB

|

Gaming

|

0 👍

/

0 👎

-- 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