Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- Using: CC: Tweaked, Plethora
- pastebin run bkcHsUG6
- pastebin get bkcHsUG6 startup
- ]]--
- if pcall(os.loadAPI, "jLib/jFuncs") then
- else
- shell.run("pastebin get kqBFGcfV jLib/jFuncs")
- os.loadAPI("jLib/jFuncs")
- end
- local smelters = { peripheral.find("xu2:tilelargishchest") }
- local inputChest = peripheral.find("minecraft:ender chest")
- local recipes= {
- [1] = { [1] = { ["name"] = "thermalfoundation:material", ["damage"] = 128, ["count"] = 12},
- [2] = { ["name"] = "thermalfoundation:material", ["damage"] = 130, ["count"] = 4},
- [3] = { ["name"] = "minecraft:redstone", ["damage"] = 0, ["count"] = 40} },
- [2] = { [1] = { ["name"] = "minecraft:end_stone", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "enderio:item_alloy_ingot", ["damage"] = 6, ["count"] = 8},
- [3] = { ["name"] = "minecraft:obsidian", ["damage"] = 0, ["count"] = 8} },
- [3] = { [1] = { ["name"] = "minecraft:iron_ingot", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "thermalfoundation:material", ["damage"] = 768, ["count"] = 8},
- [3] = { ["name"] = "minecraft:obsidian", ["damage"] = 0, ["count"] = 8} },
- [4] = { [1] = { ["name"] = "minecraft:dye", ["damage"] = 3, ["count"] = 8},
- [2] = { ["name"] = "thermalfoundation:material", ["damage"] = 768, ["count"] = 8},
- [3] = { ["name"] = "minecraft:slime_ball", ["damage"] = 0, ["count"] = 4} },
- [5] = { [1] = { ["name"] = "minecraft:slime_ball", ["damage"] = 0, ["count"] = 2},
- [2] = { ["name"] = "thermalfoundation:material", ["damage"] = 768, ["count"] = 12} },
- [6] = { [1] = { ["name"] = "minecraft:iron_ingot", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "thermalfoundation:material", ["damage"] = 768, ["count"] = 8},
- [3] = { ["name"] = "appliedenergistics2:material", ["damage"] = 5, ["count"] = 8} },
- [7] = { [1] = { ["name"] = "minecraft:redstone", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "appliedenergistics2:material", ["damage"] = 5, ["count"] = 8} },
- [8] = { [1] = { ["name"] = "minecraft:soul_sand", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "minecraft:gold_ingot", ["damage"] = 0, ["count"] = 8} },
- [9] = { [1] = { ["name"] = "enderio:item_material", ["damage"] = 0, ["count"] = 1},
- [2] = { ["name"] = "enderio:item_material", ["damage"] = 52, ["count"] = 1} },
- [10] = { [1] = { ["name"] = "minecraft:quartz", ["damage"] = 0, ["count"] = 32} },
- [11] = { [1] = { ["name"] = "minecraft:redstone", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "minecraft:gold_ingot", ["damage"] = 0, ["count"] = 8},
- [3] = { ["name"] = "minecraft:glowstone_dust", ["damage"] = 0, ["count"] = 8} },
- [12] = { [1] = { ["name"] = "enderio:item_alloy_ingot", ["damage"] = 1, ["count"] = 8},
- [2] = { ["name"] = "minecraft:ender_pearl", ["damage"] = 0, ["count"] = 8} },
- [13] = { [1] = { ["name"] = "minecraft:iron_ingot", ["damage"] = 0, ["count"] = 16},
- [2] = { ["name"] = "thermalfoundation:material", ["damage"] = 133, ["count"] = 8} },
- [14] = { [1] = { ["name"] = "thermalfoundation:material", ["damage"] = 130, ["count"] = 4},
- [2] = { ["name"] = "minecraft:glowstone_dust", ["damage"] = 0, ["count"] = 16},
- [3] = { ["name"] = "thermalfoundation:material", ["damage"] = 129, ["count"] = 12} },
- [15] = { [1] = { ["name"] = "thermalfoundation:material", ["damage"] = 768, ["count"] = 8},
- [2] = { ["name"] = "minecraft:coal", ["damage"] = 0, ["count"] = 8},
- [3] = { ["name"] = "minecraft:iron_ingot", ["damage"] = 0, ["count"] = 4} },
- [16] = { [1] = { ["name"] = "enderio:item_material", ["damage"] = 67, ["count"] = 1},
- [2] = { ["name"] = "enderio:item_material", ["damage"] = 66, ["count"] = 1} },
- [17] = { [1] = { ["name"] = "minecraft:gold_ingot", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "thermalfoundation:material", ["damage"] = 130, ["count"] = 8} },
- [18] = { [1] = { ["name"] = "ic2:dust", ["damage"] = 9, ["count"] = 2},
- [2] = { ["name"] = "minecraft:wool", ["damage"] = 0, ["count"] = 2},
- [3] = { ["name"] = "thermalfoundation:material", ["damage"] = 65, ["count"] = 2} },
- [19] = { [1] = { ["name"] = "thermalfoundation:material", ["damage"] = 128, ["count"] = 8},
- [2] = { ["name"] = "minecraft:iron_ingot", ["damage"] = 0, ["count"] = 8},
- [3] = { ["name"] = "thermalfoundation:material", ["damage"] = 131, ["count"] = 8} },
- [20] = { [1] = { ["name"] = "minecraft:redstone", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "minecraft:iron_ingot", ["damage"] = 0, ["count"] = 8} },
- [21] = { [1] = { ["name"] = "minecraft:iron_ingot", ["damage"] = 0, ["count"] = 8},
- [2] = { ["name"] = "minecraft:ender_pearl", ["damage"] = 0, ["count"] = 8} }
- }
- local currSmelter = 1
- local maxSmelter = #smelters
- local function containsRecipe(items, recipe)
- local needed = {}
- for _, material in pairs(recipe) do
- table.insert(needed, {["name"] = material.name, ["damage"] = material.damage, ["count"] = material.count})
- end
- local ret = {}
- for _, material in pairs(needed) do
- for i, item in pairs(items) do
- if(item.name == material.name and item.damage == material.damage and material.count > 0) then
- --print(("Found match for %s-%s at slot %s"):format(material.name, material.damage, i))
- --print("-------------------------")
- table.insert(ret, { ["slot"] = i, ["count"] = math.min(material.count, item.count)})
- material.count = material.count - math.min(material.count, item.count)
- end
- end
- end
- for _, material in pairs(needed) do
- if(material.count > 0) then
- return nil
- end
- end
- return ret
- end
- local function firstValidRecipe(items)
- local valid = nil
- for _, recipe in pairs(recipes) do
- valid = containsRecipe(items, recipe)
- if(valid ~= nil) then
- return valid
- end
- end
- return nil
- end
- local function sendItems(slots)
- for _, slot in pairs(slots) do
- inputChest.pushItems(peripheral.getName(smelters[currSmelter]), slot.slot, slot.count)
- end
- currSmelter = currSmelter + 1
- if(currSmelter > maxSmelter) then
- currSmelter = 1
- end
- end
- while (true) do
- local allItems = inputChest.list()
- local slots = firstValidRecipe(allItems)
- if(slots ~= nil) then
- sendItems(slots)
- else
- os.sleep(1)
- end
- end
Add Comment
Please, Sign In to add comment