Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local chest = "back"
- local chest_to_turtle = "east"
- local turtle_to_chest = "west"
- local function sum_inv(i)
- local out = {}
- for _, v in pairs(i) do
- out[v.name] = (out[v.name] or 0) + v.count
- end
- return out
- end
- local function clear_inv()
- for i = 1, 16 do
- peripheral.call(chest, "pullItems", turtle_to_chest, i)
- end
- end
- local recipe = {
- {"minecraft:sand", "minecraft:sand", "minecraft:sand"},
- {"minecraft:sand", "minecraft:gravel", "minecraft:gravel"},
- {"minecraft:gravel", "minecraft:gravel", "minecraft:dye"},
- }
- local reqs = {}
- for y, row in pairs(recipe) do
- for x, item in pairs(row) do
- reqs[item] = (reqs[item] or 0) + 1
- end
- end
- local function satisfied(reqs, by)
- for req, qty in pairs(reqs) do
- if qty > (by[req] or 0) then return false end
- end
- return true
- end
- local function move(what, to)
- for slot, stack in pairs(peripheral.call(chest, "list")) do
- if stack.name == what then peripheral.call(chest, "pushItems", chest_to_turtle, slot, 1, to) return end
- end
- end
- while true do
- local contents = peripheral.call(chest, "list")
- local items = sum_inv(contents)
- if satisfied(reqs, items) then
- print "Requirements satisfied; crafting."
- for y, row in pairs(recipe) do
- for x, item in pairs(row) do
- local tslot = ((y - 1) * 4) + x
- move(item, tslot)
- sleep()
- end
- end
- turtle.select(1)
- turtle.craft()
- --turtle.dropDown()
- repeat turtle.place() sleep()
- until turtle.getItemCount() == 0
- else
- print "Not crafting; requirements not satisfied."
- end
- sleep(1)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement