修复#1的bug

This commit is contained in:
HKXluo
2025-10-25 23:49:14 +08:00
parent d5fa6c94fc
commit 95670693d5

View File

@@ -9,7 +9,7 @@ local settings = {
delay = 0.01 -- 轮询延迟默认0.01秒
}
local Tlist = {} -- 缓存传输列表
local lastOutput = {} -- 记录每个优先级组上次使用的输出容器
local lastOutput = {} -- 记录每个任务每个优先级组上次使用的输出容器
-- 加载配置
local function loadConfig()
@@ -234,8 +234,8 @@ local function getTransferLimit(itemName, containerConfig)
end
-- 在 executeItemTask 函数中添加更多调试日志
local function executeItemTask(task)
log(LOG_LEVEL.INFO, "开始执行物品任务", "Starting item transfer task")
local function executeItemTask(task, taskIndex)
log(LOG_LEVEL.INFO, "开始执行物品任务 #"..taskIndex, "Starting item transfer task #"..taskIndex)
-- 收集所有输入容器的物品
local allItemsToTransfer = {}
@@ -414,11 +414,15 @@ local function executeItemTask(task)
local group = outputGroups[priority]
-- 轮询输出
local startIdx = lastOutput[priority] or 1
local key = taskIndex.."_"..priority -- 使用任务索引和优先级作为唯一键
log(LOG_LEVEL.DEBUG, "输出容器键: "..key, "Output container key: "..key)
local startIdx = lastOutput[key] or 1
local idx = startIdx
local attempts = 0
repeat
log(LOG_LEVEL.DEBUG, "输出容器idx:" .. tostring(idx) .. " #group:" .. tostring(#group))
local output = group[idx]
log(LOG_LEVEL.DEBUG, "尝试输出容器: "..output.name.." (优先级 "..priority..", 尝试 "..attempts.."/"..#group..")",
"Attempting output container: "..output.name.." (priority "..priority..", attempt "..attempts.."/"..#group..")")
@@ -492,7 +496,8 @@ local function executeItemTask(task)
end
-- 更新轮询索引
lastOutput[priority] = idx % #group + 1
log(LOG_LEVEL.DEBUG, "轮询: idx:" .. tostring(idx) .. " #group:" .. tostring(#group))
lastOutput[key] = idx % #group + 1
break
else
log(LOG_LEVEL.WARNING, "推送失败到 "..output.name.." (可能容器已满或无法接收)",
@@ -526,8 +531,8 @@ local function executeItemTask(task)
end
-- 执行流体传输任务
local function executeFluidTask(task)
log(LOG_LEVEL.INFO, "开始执行流体任务", "Starting fluid transfer task")
local function executeFluidTask(task, taskIndex)
log(LOG_LEVEL.INFO, "开始执行流体任务 #"..taskIndex, "Starting fluid transfer task #"..taskIndex)
local transferred = false
@@ -598,7 +603,8 @@ local function executeFluidTask(task)
local group = outputGroups[priority]
-- 轮询输出
local startIdx = lastOutput[priority] or 1
local key = taskIndex.."_"..priority -- 使用任务索引和优先级作为唯一键
local startIdx = lastOutput[key] or 1
local idx = startIdx
local attempts = 0
@@ -651,7 +657,7 @@ local function executeFluidTask(task)
end
-- 更新轮询索引
lastOutput[priority] = idx % #group + 1
lastOutput[key] = idx % #group + 1
else
log(LOG_LEVEL.WARNING, "推送失败到 "..output.name, "Push failed to "..output.name)
end
@@ -695,11 +701,11 @@ local function executeFluidTask(task)
end
-- 执行任务
local function executeTask(task)
local function executeTask(task, taskIndex)
if task.type == "item" then
return executeItemTask(task)
return executeItemTask(task, taskIndex)
elseif task.type == "fluid" then
return executeFluidTask(task)
return executeFluidTask(task, taskIndex)
else
log(LOG_LEVEL.ERROR, "错误: 未知任务类型: "..(task.type or "nil"), "Error: Unknown task type: "..(task.type or "nil"))
return false
@@ -712,7 +718,7 @@ local function taskLoop()
while true do
for i, task in ipairs(tasks) do
log(LOG_LEVEL.INFO, "开始任务 #"..i, "Starting task #"..i)
local success, result = pcall(executeTask, task)
local success, result = pcall(executeTask, task, i)
if not success then
log(LOG_LEVEL.ERROR, "任务 #"..i.." 错误: "..tostring(result), "Task #"..i.." error: "..tostring(result))
elseif result then
@@ -794,7 +800,7 @@ local function processCommand(cmd)
for itemName in pairs(config.blacklist) do
table.insert(items, itemName)
end
echo(" "..name.." ("..cacheStr..", 黑名单: "..table.concat(items, ", ")..")",
echo(" "..name.." ("..cacheStr..", 黑名单: "..table.concat(items, ", ")..")",
" "..name.." ("..cacheStrEn..", blacklist: "..table.concat(items, ", ")..")")
else
echo(" "..name.." ("..cacheStr..")", " "..name.." ("..cacheStrEn..")")
@@ -818,7 +824,7 @@ local function processCommand(cmd)
end
end
echo(" "..name.." (优先级:"..priority..", "..cacheStr..", 白名单: "..table.concat(items, ", ")..")",
" "..name.." (priority:"..priority..", "..cacheStrEn..", whitelist: "..table.concat(items, ", ")..")")
" "..name.." (priority:"..priority..", "..cacheStrEn..", whitelist: "..table.concat(items, ", ")..")")
elseif config.blacklist then
local items = {}
for itemName in pairs(config.blacklist) do
@@ -938,5 +944,4 @@ parallel.waitForAll(
end
end,
taskLoop
)
)