From fdf83cfdaab0f90e13f3d1613208af7e5d0e0d6f Mon Sep 17 00:00:00 2001 From: brulijam Date: Sat, 8 Jun 2024 18:33:01 +0200 Subject: [PATCH] refactored mining --- src/brulijam/turtle-miner-fibo.lua | 81 +++++++++++++++++++++++++++--- src/brulijam/turtle-treeFarmer.lua | 1 + 2 files changed, 75 insertions(+), 7 deletions(-) diff --git a/src/brulijam/turtle-miner-fibo.lua b/src/brulijam/turtle-miner-fibo.lua index d54f68c..5258a45 100644 --- a/src/brulijam/turtle-miner-fibo.lua +++ b/src/brulijam/turtle-miner-fibo.lua @@ -65,7 +65,7 @@ local function getState() end -local function savePositionToFile() +local function savePos(prefix) --swap modem with Pickaxe --by convention the chunkloader is always left, so that Tools are right for i=1, 16 do @@ -77,14 +77,79 @@ local function savePositionToFile() turtle.equipRight() posZ, posY, posX = gps.locate() sleep(1) - basic.appendToFileNl("/brulijam/files/chests-turtle-miner-fibo.txt", "Chest at: " .. posX .. ", " .. posY .. ", " .. posZ) - networking.sendLog("all", "/brulijam/logs/chests-to-collect.txt", posX .. ", " .. posY .. ", " .. posZ) + if prefix == "Chest placed" then + posY = posY + 1 + end + basic.appendToFileNl("/brulijam/files/chests-turtle-miner-fibo.txt", "[" .. prefix .. "] " .. posX .. ", " .. posY .. ", " .. posZ) + networking.sendLog("all", "/brulijam/logs/chests-to-collect.txt", "[" .. prefix .. "] " .. posX .. ", " .. posY .. ", " .. posZ) turtle.equipRight() end end end end +local function inventoryRework() + chestAvailable = false + chestSlot = 0 + spaceAvailable = false + + for i=1, 16 do + turtle.select(i) + itemDetail = turtle.getItemDetail() + if itemDetail ~= nil then + if itemDetail.name == "minecraft:coal" then + turtle.refuel() + spaceAvailable = true + elseif itemDetail.name == "minecraft:chest" then + chestAvailable = true + chestSlot = i + else --check if item can be thrown away + keepItem = false + for j=0, #keepList do + if itemDetail.name == keepList[j] then + keepItem = true + end + end + if not keepItem then + turtle.dropDown() + spaceAvailable = true + end + end + else --at least one slot of space remaining + spaceAvailable = true + end + end + + --store items away + if not spaceAvailable and chestAvailable then + turtle.up() + basic.secureDigUp() + turtle.up() + basic.secureDigUp() + turtle.select(chestSlot) + turtle.placeUp() + savePos("Chest placed") + + for k=1, 16 do + turtle.select(i) + itemDetail = turtle.getItemDetail() + if itemDetail ~= nil then + if itemDetail.name ~= "minecraft:chest" and itemDetail.name ~= "computercraft:wireless_modem_advanced" then + turtle.dropUp() + end + end + end + turtle.down() + turtle.down() + end + + if not spaceAvailable and not chestAvailable then + savePos("Turtle stopped") + shell.run("delete /brulijam/task.lua") + shell.run("reboot") + end +end + local function clearInventory() for i=1, 16 do @@ -134,7 +199,7 @@ local function storeItems() turtle.up() basic.secureDigUp() turtle.placeUp() - savePositionToFile() + savePos() chestAvailable = true break elseif i == 16 then @@ -224,7 +289,8 @@ local function mineRow() basic.secureDigUp() basic.secureDigDown() - clearInventory() + --clearInventory() + --inventoryRework() --check current mining step for ore turtle.up() @@ -235,8 +301,9 @@ local function mineRow() recursiveOreMining() turtle.up() - clearInventory() - checkInventory() + inventoryRework() + --clearInventory() + --checkInventory() --save path progress state["dataCurrentPathProgress"] = i+1 diff --git a/src/brulijam/turtle-treeFarmer.lua b/src/brulijam/turtle-treeFarmer.lua index d6baa40..2c493a6 100644 --- a/src/brulijam/turtle-treeFarmer.lua +++ b/src/brulijam/turtle-treeFarmer.lua @@ -54,6 +54,7 @@ local function placeTree() if itemDetail.name == "minecraft:spruce_sapling" then local blockFound, blockData = turtle.inspect() if not blockFound then + sleep(3) turtle.up() turtle.forward() turtle.suckDown()