cc-stuff/storage_manager.lua

39 lines
1.2 KiB
Lua

-- Program that manages a storage system
-- For now this just means removing "waste" but in the future it could involve
-- - Displaying information to the user
-- - Freeing up slots where it can
local SOURCES =
{
}
local KEEP_ONLY = {}
KEEP_ONLY["minecraft:quartz"] = 6 * 64
KEEP_ONLY["minecraft:prismarine_shard"] = 2 * 64
function remove_excess_from (waste_inv, amounts_to_keep, source)
for slot, item in pairs(peripheral.call(source, "list")) do
if amounts_to_keep[item.name] ~= nil then
local excess = item.count - amounts_to_keep[item.name]
if excess > 0 then
amounts_to_keep[item.name] = 0
local result = peripheral.call(
waste_inv, "pullItems", source, slot, excess
)
else
amounts_to_keep[item.name] = -excess
end
end
end
return amounts_to_keep
end
function remove_waste(sources, waste_inventory, amounts_to_keep)
for _, src in ipairs(sources) do
amounts_to_keep = remove_excess_from(waste_inventory, amounts_to_keep, src)
end
end
while true do
remove_waste(SOURCES, WASTE_INV, KEEP_ONLY)
end