diff --git a/inventoryManager.lua b/inventoryManager.lua index 53685fd..ef91819 100644 --- a/inventoryManager.lua +++ b/inventoryManager.lua @@ -31,48 +31,48 @@ local SLOT_OUTPUT = 3 ------------------------------------------------- local SMELTABLE = { - -- Ores - ["minecraft:raw_iron"] = "minecraft:iron_ingot", - ["minecraft:raw_gold"] = "minecraft:gold_ingot", - ["minecraft:raw_copper"] = "minecraft:copper_ingot", - ["minecraft:iron_ore"] = "minecraft:iron_ingot", - ["minecraft:gold_ore"] = "minecraft:gold_ingot", - ["minecraft:copper_ore"] = "minecraft:copper_ingot", - ["minecraft:deepslate_iron_ore"] = "minecraft:iron_ingot", - ["minecraft:deepslate_gold_ore"] = "minecraft:gold_ingot", - ["minecraft:deepslate_copper_ore"] = "minecraft:copper_ingot", - ["minecraft:ancient_debris"] = "minecraft:netherite_scrap", - -- Sand / stone - ["minecraft:sand"] = "minecraft:glass", - ["minecraft:red_sand"] = "minecraft:glass", - ["minecraft:cobblestone"] = "minecraft:stone", - ["minecraft:stone"] = "minecraft:smooth_stone", - ["minecraft:clay_ball"] = "minecraft:brick", - ["minecraft:netherrack"] = "minecraft:nether_brick", - ["minecraft:sandstone"] = "minecraft:smooth_sandstone", - -- Food - ["minecraft:beef"] = "minecraft:cooked_beef", - ["minecraft:porkchop"] = "minecraft:cooked_porkchop", - ["minecraft:chicken"] = "minecraft:cooked_chicken", - ["minecraft:mutton"] = "minecraft:cooked_mutton", - ["minecraft:rabbit"] = "minecraft:cooked_rabbit", - ["minecraft:cod"] = "minecraft:cooked_cod", - ["minecraft:salmon"] = "minecraft:cooked_salmon", - ["minecraft:potato"] = "minecraft:baked_potato", - ["minecraft:kelp"] = "minecraft:dried_kelp", - -- Misc - ["minecraft:wet_sponge"] = "minecraft:sponge", - ["minecraft:cactus"] = "minecraft:green_dye", - ["minecraft:sea_pickle"] = "minecraft:lime_dye", - ["minecraft:log"] = "minecraft:charcoal", - ["minecraft:oak_log"] = "minecraft:charcoal", - ["minecraft:spruce_log"] = "minecraft:charcoal", - ["minecraft:birch_log"] = "minecraft:charcoal", - ["minecraft:jungle_log"] = "minecraft:charcoal", - ["minecraft:acacia_log"] = "minecraft:charcoal", - ["minecraft:dark_oak_log"] = "minecraft:charcoal", - ["minecraft:mangrove_log"] = "minecraft:charcoal", - ["minecraft:cherry_log"] = "minecraft:charcoal", + -- Ores (furnace + blast furnace only) + ["minecraft:raw_iron"] = { result = "minecraft:iron_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:raw_gold"] = { result = "minecraft:gold_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:raw_copper"] = { result = "minecraft:copper_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:iron_ore"] = { result = "minecraft:iron_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:gold_ore"] = { result = "minecraft:gold_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:copper_ore"] = { result = "minecraft:copper_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:deepslate_iron_ore"] = { result = "minecraft:iron_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:deepslate_gold_ore"] = { result = "minecraft:gold_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:deepslate_copper_ore"] = { result = "minecraft:copper_ingot", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:ancient_debris"] = { result = "minecraft:netherite_scrap",furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + -- Sand / stone (furnace + blast furnace) + ["minecraft:sand"] = { result = "minecraft:glass", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:red_sand"] = { result = "minecraft:glass", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:cobblestone"] = { result = "minecraft:stone", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:stone"] = { result = "minecraft:smooth_stone", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:clay_ball"] = { result = "minecraft:brick", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:netherrack"] = { result = "minecraft:nether_brick", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + ["minecraft:sandstone"] = { result = "minecraft:smooth_sandstone", furnaces = {"minecraft:furnace", "minecraft:blast_furnace"} }, + -- Food (furnace + smoker only) + ["minecraft:beef"] = { result = "minecraft:cooked_beef", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:porkchop"] = { result = "minecraft:cooked_porkchop", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:chicken"] = { result = "minecraft:cooked_chicken", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:mutton"] = { result = "minecraft:cooked_mutton", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:rabbit"] = { result = "minecraft:cooked_rabbit", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:cod"] = { result = "minecraft:cooked_cod", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:salmon"] = { result = "minecraft:cooked_salmon", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:potato"] = { result = "minecraft:baked_potato", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + ["minecraft:kelp"] = { result = "minecraft:dried_kelp", furnaces = {"minecraft:furnace", "minecraft:smoker"} }, + -- Misc (furnace only) + ["minecraft:wet_sponge"] = { result = "minecraft:sponge", furnaces = {"minecraft:furnace"} }, + ["minecraft:cactus"] = { result = "minecraft:green_dye", furnaces = {"minecraft:furnace"} }, + ["minecraft:sea_pickle"] = { result = "minecraft:lime_dye", furnaces = {"minecraft:furnace"} }, + ["minecraft:log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:oak_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:spruce_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:birch_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:jungle_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:acacia_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:dark_oak_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:mangrove_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, + ["minecraft:cherry_log"] = { result = "minecraft:charcoal", furnaces = {"minecraft:furnace"} }, } -- Fuel items, ordered by preference (best first) @@ -782,10 +782,20 @@ local function autoSmelt() -- 3) Load smeltable items into empty input slot local inputItem = contents[SLOT_INPUT] + local furnaceType = peripheral.getType(fname) if not inputItem then - -- Find something smeltable in chests - for itemName, _ in pairs(SMELTABLE) do - if catalogue[itemName] then + -- Find something smeltable in chests that this furnace type can process + for itemName, recipe in pairs(SMELTABLE) do + -- Check if this furnace type is compatible + local compatible = false + for _, ft in ipairs(recipe.furnaces) do + if ft == furnaceType then + compatible = true + break + end + end + + if compatible and catalogue[itemName] then -- Count total of this item across all chests local totalInStorage = 0 for _, src in ipairs(catalogue[itemName]) do