test
This commit is contained in:
parent
92a55f15c9
commit
784f7089bf
@ -5,29 +5,63 @@ local logger = require("libs.logger")
|
|||||||
-- Minimum fuel required to proceed with one movement
|
-- Minimum fuel required to proceed with one movement
|
||||||
local MIN_FUEL = 1 -- you can raise this if you want a safety margin
|
local MIN_FUEL = 1 -- you can raise this if you want a safety margin
|
||||||
|
|
||||||
-- Ensure the turtle has fuel
|
-- 🔋 Attempt to refuel from inventory
|
||||||
local function checkFuel()
|
local function refuelFromInventory(minRequired)
|
||||||
|
minRequired = minRequired or MIN_FUEL
|
||||||
|
local gained = 0
|
||||||
|
|
||||||
|
for slot = 1, 16 do
|
||||||
|
turtle.select(slot)
|
||||||
|
if turtle.getItemCount() > 0 and turtle.refuel(0) then
|
||||||
|
local before = turtle.getFuelLevel()
|
||||||
|
if turtle.refuel(1) then
|
||||||
|
local after = turtle.getFuelLevel()
|
||||||
|
local added = after - before
|
||||||
|
gained = gained + added
|
||||||
|
logger.log(string.format("Refueled +%d from slot %d", added, slot))
|
||||||
|
if after >= minRequired then break end
|
||||||
|
else
|
||||||
|
logger.log(string.format("⚠️ Refuel failed from slot %d", slot))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return gained
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ✅ Ensure fuel before doing anything
|
||||||
|
local function refuelIfNeeded()
|
||||||
local fuel = turtle.getFuelLevel()
|
local fuel = turtle.getFuelLevel()
|
||||||
if fuel == "unlimited" then return true end -- creative mode
|
if fuel == "unlimited" then return true end
|
||||||
if fuel == nil or fuel < MIN_FUEL then
|
|
||||||
logger.log("Not enough fuel! Current level: " .. tostring(fuel))
|
if fuel < MIN_FUEL then
|
||||||
|
logger.log("⚠️ Low fuel, attempting to refuel...")
|
||||||
|
local added = refuelFromInventory(MIN_FUEL)
|
||||||
|
fuel = turtle.getFuelLevel()
|
||||||
|
end
|
||||||
|
|
||||||
|
if fuel < MIN_FUEL then
|
||||||
|
logger.log("Not enough fuel. Waiting...")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Helper: retry an action with fuel check
|
-- 🚶 Retry a movement or action with fuel awareness
|
||||||
local function try(actionFn, times)
|
local function try(actionFn, times, name)
|
||||||
times = times or 5
|
times = times or 5
|
||||||
for i = 1, times do
|
for i = 1, times do
|
||||||
if not checkFuel() then
|
if not refuelIfNeeded() then
|
||||||
logger.log("Waiting for fuel...")
|
|
||||||
sleep(2)
|
sleep(2)
|
||||||
elseif actionFn() then
|
elseif actionFn() then
|
||||||
|
if name then logger.log("Action succeeded: " .. name) end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
if name then logger.log("Retrying: " .. name) end
|
||||||
sleep(0.5)
|
sleep(0.5)
|
||||||
end
|
end
|
||||||
|
if name then logger.log("Gave up after retries: " .. name) end
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user