-- vi: ft=lua
-- Goal: collect lava using buckets in the nether, deposit the buckets into a fluid transposer that extracts the lava and sends it to a power generator

local function isEmptyBucket()
    return turtle.getItemDetail().name == "minecraft:bucket"
end

local function isLavaBucket()
    return turtle.getItemDetail().name == "minecraft:lava_bucket"
end

local function findFirstEmptyBucket()
    for i=1,16 do
        if isEmptyBucket() then
            print('Slot' .. i .. 'is an empty bucket')
            return i
        end
    end
    return nil
end

local function findFirstLavaBucket()
    for i=1,16 do
        if isLavaBucket() then
            print('Slot' .. i .. 'is an lava bucket')
            return i
        end
    end
    return nil
end

local function returnToBase()
    print(ForwardCounter)
end

local function despositRefill()
end

local function refuel()
    local lava_bucket = findFirstLavaBucket()
    if lava_bucket == nil then
        return nil
    end

    turtle.select(lava_bucket)
    turtle.refuel()
end


ForwardCounter = 0

while true do
    if turtle.getFuelLevel() < 1000 then
        if refuel() == nil then
            print('refulling failed. probably the end of the lava lake. returning to base')
            returnToBase()
            break
        end
    end

    local bucket = findFirstEmptyBucket()

    if bucket == nil then
        print('could not find any empty buckets. returning and refilling')
        returnToBase()
        despositRefill()
    end

    turtle.select(bucket)
    -- try to fill it
    turtle.placeDown()
    if isEmptyBucket() then
        if turtle.forward() then
            ForwardCounter = ForwardCounter + 1
        end
    end
end