feat(tunnels-miner): drop items from inventory when full
This commit is contained in:
parent
15764993e0
commit
7a8636f054
@ -9,5 +9,8 @@ return {
|
|||||||
['mysticalagriculture:deepslate_prosperity_ore'] = true,
|
['mysticalagriculture:deepslate_prosperity_ore'] = true,
|
||||||
['mysticalagradditions:nether_prosperity_ore'] = true,
|
['mysticalagradditions:nether_prosperity_ore'] = true,
|
||||||
['mysticalagradditions:end_prosperity_ore'] = true
|
['mysticalagradditions:end_prosperity_ore'] = true
|
||||||
|
},
|
||||||
|
VEIN_ORE_WHITELIST_ITEMS = {
|
||||||
|
['mysticalagriculture:prosperity_shard'] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,7 +6,7 @@ local TIME_TO_START = 3
|
|||||||
local IDLE_TIME_BETWEEN_TUNNELS = 1
|
local IDLE_TIME_BETWEEN_TUNNELS = 1
|
||||||
local SPACE_BETWEEN_TUNNELS = 3
|
local SPACE_BETWEEN_TUNNELS = 3
|
||||||
|
|
||||||
local VERSION = "2.0.1"
|
local VERSION = "2.1.0"
|
||||||
|
|
||||||
local MOVES_BY_DIRECTION = {
|
local MOVES_BY_DIRECTION = {
|
||||||
right = {
|
right = {
|
||||||
@ -97,10 +97,14 @@ local function digForward(n, cb)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function isWhitelistedOre(config, block)
|
local function isWhitelistedOre(config, itemOrBlock)
|
||||||
local blockName = block and block.name
|
local itemOrBlockName = itemOrBlock and itemOrBlock.name
|
||||||
|
|
||||||
if config.VEIN_ORES_WHITELIST[blockName] then
|
if config.VEIN_ORES_WHITELIST[itemOrBlockName] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
if config.VEIN_ORES_WHITELIST_ITEMS[itemOrBlockName] then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -112,7 +116,28 @@ local function inspectWhitelistedOre(config, inspectFn)
|
|||||||
return isWhitelistedOre(config, block)
|
return isWhitelistedOre(config, block)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function ensureEnoughSpaceInInventory(config)
|
||||||
|
if not turtleUtils.isInventoryFull() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- 1. select an item that is not in whitelist item
|
||||||
|
local selected = turtleUtils.selectItemBy(function(slot)
|
||||||
|
return not isWhitelistedOre(config, turtle.getItemDetail(slot))
|
||||||
|
end)
|
||||||
|
|
||||||
|
if selected then
|
||||||
|
-- 2. drop the selected item
|
||||||
|
turtle.drop()
|
||||||
|
else
|
||||||
|
-- TODO: handle when cannot drop anything
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
local function mineVeinOres(config)
|
local function mineVeinOres(config)
|
||||||
|
ensureEnoughSpaceInInventory(config)
|
||||||
|
|
||||||
-- 1. front
|
-- 1. front
|
||||||
if inspectWhitelistedOre(config, turtle.inspect) then
|
if inspectWhitelistedOre(config, turtle.inspect) then
|
||||||
turtleUtils.forceForward()
|
turtleUtils.forceForward()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user