Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- recipe = {
- [6] = true, [7] = true, [8] = true,
- [10] = true, [12] = true,
- [14] = true, [15] = true, [16] = true,
- }
- do
- local itemsRequired = 0
- slotMap = {}
- for k, v in pairs(recipe) do
- if v == true then
- itemsRequired = itemsRequired + 1
- slotMap[k] = true
- end
- end
- recipe[ "itemsRequired" ] = itemsRequired
- end
- function balanceSlot( slot , source , amount ) -- toSlot, take fromSlot, how much to take?
- --print("balanceslot")
- if turtle.getItemCount(source) >= amount then
- turtle.select( source );
- turtle.transferTo( slot, amount )
- return true
- else
- print(turtle.getItemCount(source).. "<" .. tostring(amount))
- end
- return false
- end
- function suckFillSlot() -- suck to fill first slot, and distribute exceeding items from the 2 slot
- print("suckfillslot")
- turtle.suckDown()
- if turtle.getItemCount(2) ~= 0 then
- turtle.select(2)
- for k, v in pairs(slotMap) do
- if turtle.getItemCount(2) ~= 0 then
- turtle.select(2);
- turtle.transferTo(k, math.floor(turtle.getItemCount(2) / recipe.itemsRequired))
- else
- break
- end
- end
- if turtle.getItemCount(2) ~= 0 then turtle.dropDown() end -- if one item remained
- end
- end
- function main()
- suckFillSlot()
- turtle.select(1)
- --balance all crafting slots
- for k, v in pairs( slotMap ) do
- if v then
- --print("stack1")
- local nextKey = next( slotMap, k)
- if nextKey == nil then nextKey = 1 end
- print("* ["..k.."]"..turtle.getItemCount( k ) .." - ["..k.."]"..turtle.getItemCount( nextKey ))
- if turtle.getItemCount( k ) > turtle.getItemCount( nextKey ) then -- balance the next slot out
- print("Stack 1:1")
- sleep(1)
- if balanceSlot( nextKey , 1, turtle.getItemCount(k) - turtle.getItemCount( nextKey ) )==false then
- print("Not enough source items, aborting")
- break
- end
- elseif turtle.getItemCount( k ) < turtle.getItemCount( nextKey ) then
- print("Stack 1:2")
- sleep(1)
- if balanceSlot( k , 1, turtle.getItemCount( nextKey ) - turtle.getItemCount(k) )==false then
- print("Not enough source items, aborting")
- break
- end
- end
- end
- end
- if turtle.getItemCount(1) > recipe.itemsRequired then
- print("stack2")
- local craftingItemPerSlot = math.floor( turtle.getItemCount(1) / recipe.itemsRequired)
- for k, v in pairs( slotMap ) do
- if v == true then
- balanceSlot( k , 1 , craftingItemPerSlot )
- end
- end
- turtle.select(1); turtle.transferTo(6, turtle.getItemCount(1))
- turtle.craft(craftingItemPerSlot)
- turtle.drop()
- else
- print("Not enough items!")
- end
- end
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement