diff --git a/behavior.lua b/behavior.lua index 77cb217..5c3b017 100644 --- a/behavior.lua +++ b/behavior.lua @@ -9,7 +9,14 @@ function M.getStatus() return currentStatus end +function M.setStatus(value) + currentStatus = value +end + function M.run() + -- Register the status setter for turtleutils to call + tutil.setStatusCallback(M.setStatus) + while true do currentStatus = "moving backward" logger.log("Started moving backward") diff --git a/libs/turtleutils.lua b/libs/turtleutils.lua index c2601ce..76d7689 100644 --- a/libs/turtleutils.lua +++ b/libs/turtleutils.lua @@ -2,6 +2,13 @@ local M = {} local logger = require("libs.logger") +-- Optional external status setter (set via M.setStatusCallback) +local statusCallback = nil + +function M.setStatusCallback(fn) + statusCallback = fn +end + -- Minimum fuel required to proceed with one movement local MIN_FUEL = 1 -- you can raise this if you want a safety margin @@ -29,7 +36,7 @@ local function refuelFromInventory(minRequired) return gained end --- ✅ Ensure fuel before doing anything +-- Ensure fuel before doing anything local function refuelIfNeeded() local fuel = turtle.getFuelLevel() if fuel == "unlimited" then return true end @@ -40,15 +47,20 @@ local function refuelIfNeeded() fuel = turtle.getFuelLevel() end - if fuel < MIN_FUEL then - logger.log("Not enough fuel. Waiting...") - return false + while fuel < MIN_FUEL do + if statusCallback then statusCallback("out_of_fuel") end + logger.log("No fuel. Waiting for fuel...") + sleep(5) + + -- Try to refuel again + local added = refuelFromInventory(MIN_FUEL) + fuel = turtle.getFuelLevel() end return true end --- 🚶 Retry a movement or action with fuel awareness +-- Retry a movement or action with fuel awareness local function try(actionFn, times, name) times = times or 5 for i = 1, times do