lava-collector: add lateral movement

This commit is contained in:
Navid Sassan 2023-12-03 17:08:06 +01:00
parent 7978cfbe5f
commit 0657c9b336

View File

@ -4,6 +4,11 @@
-- chest above base needs to contain empty buckets
-- the filled buckets will be deposited in a chest below the base
FORWARD = 1
RIGHT = 2
LEFT = 3
BACKWARD = 4
local function compareItemName(target)
local itemDetail = turtle.getItemDetail()
if itemDetail == nil then
@ -31,13 +36,46 @@ local function findFirstLavaBucket()
return findFirstItem("minecraft:lava_bucket")
end
local function goRight()
if not turtle.turnRight() then
return false
end
local success = turtle.forward()
turtle.turnLeft()
return success
end
local function goLeft()
if not turtle.turnLeft() then
return false
end
local success = turtle.forward()
turtle.turnRight()
return success
end
local function doReverseMovement(movement)
if movement == FORWARD then
return turtle.back()
elseif movement == RIGHT then
return goLeft()
elseif movement == LEFT then
return goRight()
elseif movement == BACKWARD then
return turtle.forward()
end
end
local function returnToBase()
print('returing to base')
while ForwardCounter > 0 do
print('ForwardCounter: ' .. ForwardCounter)
if turtle.back() then
ForwardCounter = ForwardCounter - 1
else
for i = #Movements, 1, -1 do
local movement = Movements[i]
print('Movement ' .. i .. ': ' .. movement)
if not doReverseMovement(movement) then
print('hit a block on the way back, I am stuck!')
end
end
@ -48,6 +86,7 @@ local function despositRefill()
turtle.select(i)
if compareItemName("minecraft:lava_bucket") then
while not turtle.dropDown() do
---@diagnostic disable-next-line: undefined-field
os.sleep(1)
end
end
@ -73,11 +112,11 @@ local function refuel()
end
ForwardCounter = 0
Movements = {}
despositRefill()
while true do
if turtle.getFuelLevel() <= ForwardCounter then
if turtle.getFuelLevel() <= #Movements then
print('not enough fuel to return. trying to refuel')
if not refuel() then
print('refulling failed. probably the end of the lava lake. returning to base')
@ -96,9 +135,13 @@ while true do
turtle.placeDown()
if compareItemName("minecraft:bucket") then
if turtle.forward() then
ForwardCounter = ForwardCounter + 1
table.insert(Movements, FORWARD)
elseif goRight() then
table.insert(Movements, RIGHT)
elseif goLeft() then
table.insert(Movements, LEFT)
else
print('hit a wall - returning to base')
print("can't find a path - returning to base")
returnToBase()
despositRefill()
end