fix(程序): 修复海龟采矿和农场程序的多个问题

- 更新安装程序版本号至0.3.8 Beta 15
- 修改采矿程序:调整背包满阈值,添加中断处理和返回起始位置功能
- 修改农场程序:添加背包满检测,改进物品存放逻辑,添加中断处理
- 统一两个程序的错误提示信息和返回起始位置功能
This commit is contained in:
2025-09-05 20:59:32 +08:00
parent 928878cb63
commit ef4875d456
3 changed files with 58 additions and 10 deletions

View File

@@ -32,6 +32,7 @@ local WHEAT_THRESHOLD = 64 -- 小麦存储阈值
local SEED_SLOT = 1 -- 种子存放槽位 local SEED_SLOT = 1 -- 种子存放槽位
local WHEAT_SLOT = 2 -- 小麦存放槽位 local WHEAT_SLOT = 2 -- 小麦存放槽位
local FUEL_THRESHOLD = 200 -- 燃料不足阈值 local FUEL_THRESHOLD = 200 -- 燃料不足阈值
local INVENTORY_FULL_THRESHOLD = 0 -- 背包满时剩余空格数 (0表示16个格子全满)
local CHEST_NAMES = {"chest", "shulker_box"} -- 箱子类型名称 local CHEST_NAMES = {"chest", "shulker_box"} -- 箱子类型名称
-- 坐标跟踪变量 -- 坐标跟踪变量
@@ -50,6 +51,17 @@ local function isChest(block_data)
end end
end end
return false return false
end
-- 检查背包是否已满
local function isInventoryFull()
local empty_slots = 0
for i = 1, 16 do
if turtle.getItemCount(i) == 0 then
empty_slots = empty_slots + 1
end
end
return empty_slots <= INVENTORY_FULL_THRESHOLD
-- 检查燃料是否充足 -- 检查燃料是否充足
@@ -205,13 +217,25 @@ local function returnToStart()
print(colors.green .. "Returned to starting position." .. colors.white) print(colors.green .. "Returned to starting position." .. colors.white)
end end
-- 寻找附近的箱子并存放小麦 -- 寻找附近的箱子并存放小麦和处理背包满的情况
local function findChestAndDeposit() local function findChestAndDeposit()
print(colors.yellow .. "Wheat count reached limit. Returning to start position first..." .. colors.white) -- 检查是否需要存放小麦或背包已满
local need_deposit = false
-- 检查当前槽位的小麦数量 -- 检查小麦数量
turtle.select(WHEAT_SLOT) turtle.select(WHEAT_SLOT)
if turtle.getItemCount(WHEAT_SLOT) < WHEAT_THRESHOLD then if turtle.getItemCount(WHEAT_SLOT) >= WHEAT_THRESHOLD then
need_deposit = true
end
-- 检查背包是否已满
if isInventoryFull() then
print(colors.yellow .. "Inventory is full. Returning to start position first..." .. colors.white)
need_deposit = true
end
-- 如果不需要存放,直接返回
if not need_deposit then
return true return true
end end
@@ -270,7 +294,7 @@ local function findChestAndDeposit()
return true return true
end end
print(colors.red .. "No chest found nearby." .. colors.white) print(colors.red .. "No chest found nearby. Already at starting position." .. colors.white)
return false return false
end end
@@ -283,6 +307,8 @@ local function startFarming()
currentX, currentY, currentZ = 0, 0, 0 currentX, currentY, currentZ = 0, 0, 0
direction = 0 -- 初始方向朝北 direction = 0 -- 初始方向朝北
-- 捕获Ctrl+T中断确保在停止时返回初始位置
local success, error = pcall(function()
while true do while true do
-- 检查燃料 -- 检查燃料
if not checkFuel() then if not checkFuel() then
@@ -290,9 +316,9 @@ local function startFarming()
break break
end end
-- 检查是否需要存放小麦 -- 检查是否需要存放小麦或背包已满
if not findChestAndDeposit() then if not findChestAndDeposit() then
print(colors.red .. "Cannot deposit wheat. Stopping farming." .. colors.white) print(colors.red .. "Cannot deposit items. Stopping farming." .. colors.white)
break break
end end
@@ -326,6 +352,16 @@ local function startFarming()
os.sleep(0.1) os.sleep(0.1)
end end
end
)
-- 确保在停止时返回初始位置
if not success then
print(colors.red .. "Program interrupted: " .. tostring(error) .. "" .. colors.white)
end
print(colors.yellow .. "Returning to starting position before stopping..." .. colors.white)
returnToStart()
print(colors.yellow .. "Auto farming stopped." .. colors.white) print(colors.yellow .. "Auto farming stopped." .. colors.white)
end end

View File

@@ -29,7 +29,7 @@ end
-- 配置常量 -- 配置常量
local FUEL_THRESHOLD = 500 -- 燃料不足阈值 local FUEL_THRESHOLD = 500 -- 燃料不足阈值
local INVENTORY_FULL_THRESHOLD = 15 -- 背包满时剩余空格数 local INVENTORY_FULL_THRESHOLD = 0 -- 背包满时剩余空格数 (0表示16个格子全满)
local COAL_NAMES = {"minecraft:coal", "minecraft:charcoal"} -- 煤炭物品名称 local COAL_NAMES = {"minecraft:coal", "minecraft:charcoal"} -- 煤炭物品名称
local CHEST_NAMES = {"chest", "shulker_box"} -- 箱子类型名称 local CHEST_NAMES = {"chest", "shulker_box"} -- 箱子类型名称
@@ -321,7 +321,7 @@ local function findChestAndDeposit()
return true return true
end end
print(colors.red .. "No chest found nearby." .. colors.white) print(colors.red .. "No chest found nearby. Already at starting position." .. colors.white)
return false return false
end end
@@ -334,6 +334,8 @@ local function startMining()
currentX, currentY, currentZ = 0, 0, 0 currentX, currentY, currentZ = 0, 0, 0
direction = 0 -- 初始方向朝北 direction = 0 -- 初始方向朝北
-- 捕获Ctrl+T中断确保在停止时返回初始位置
local success, error = pcall(function()
while true do while true do
-- 检查燃料 -- 检查燃料
if not checkFuel() then if not checkFuel() then
@@ -425,6 +427,16 @@ local function startMining()
-- os.sleep(0.1) -- os.sleep(0.1)
end end
end
)
-- 确保在停止时返回初始位置
if not success then
print(colors.red .. "Program interrupted: " .. tostring(error) .. "" .. colors.white)
end
print(colors.yellow .. "Returning to starting position before stopping..." .. colors.white)
returnToStart()
print(colors.yellow .. "Auto mining stopped." .. colors.white) print(colors.yellow .. "Auto mining stopped." .. colors.white)
end end

View File

@@ -1,5 +1,5 @@
-- LeonOS installer -- LeonOS installer
local INSTALLER_VERSION = "0.3.8 Beta 14" local INSTALLER_VERSION = "0.3.8 Beta 15"
local DEFAULT_ROM_DIR = "/leonos" local DEFAULT_ROM_DIR = "/leonos"
print("Start loading LeonOS installer ("..INSTALLER_VERSION..")...") print("Start loading LeonOS installer ("..INSTALLER_VERSION..")...")