computercraft/lava-collector
2023-11-23 00:46:37 +01:00

91 lines
2.0 KiB
Lua

-- 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 compareItemName(target)
local itemDetail = turtle.getItemDetail()
if itemDetail == nil then
return nil
end
print('item name: ' .. itemDetail.name)
return itemDetail.name == target
end
local function isEmptyBucket()
compareItemName("minecraft:bucket")
end
local function isLavaBucket()
compareItemName("minecraft:lava_bucket")
end
local function findFirstEmptyBucket()
for i=1,16 do
print('Testing slot for empty bucket: ' .. i)
if isEmptyBucket() then
print('Found an empty bucket in slot ' .. i)
return i
end
end
return nil
end
local function findFirstLavaBucket()
for i=1,16 do
turtle.select(i)
print('Testing slot for lava bucket: ' .. i)
if isLavaBucket() then
print('Found a lava bucket in slot ' .. i)
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 false
end
turtle.select(lava_bucket)
turtle.refuel()
return true
end
ForwardCounter = 0
while true do
if turtle.getFuelLevel() < 1000 then
if not refuel() 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