-- See README for usage info function placeBreeder() print('Initializing breeder...') breeder = peripheral.wrap('top') -- Why are we discarding slot 2? -- Because, by design, it MUST be -- the trash chicken from the last -- generation. breeder.pushItems('bottom', 2) for i = 1, 16, 1 do turtle.select(i) turtle.suckUp() end turtle.digUp() selectItem('chickens:breeder') turtle.placeUp() selectItem('minecraft:wheat_seeds') turtle.dropUp() pushBestChickens() end function selectItem(name) for i = 1, 16, 1 do if turtle.getItemDetail(i) then if turtle.getItemDetail(i).name == name then turtle.select(i) return i end end end end function pushBestChickens() print('Selecting best chickens...') chickens = 0 index = nil for i = 16, 1, -1 do print('Checking index ' .. i) item = turtle.getItemDetail(i) if item then turtle.select(i) if not i == 1 then print('Discarding twin from breeding pair') turtle.dropDown(item.count - 1) end if item.name == 'chickens:chicken_item' then if item.count >= 16 then error('Done!') end for i = 1, item.count, 1 do if chickens == 0 then print('Inserting first chicken') turtle.dropUp(1) chickens = chickens + 1 elseif chickens == 1 then print('Inserting second chicken') buffer = peripheral.wrap('front') turtle.drop(1) buffer.pushItems('top', 1, 16, 2) chickens = chickens + 1 else print('Discarding chicken') turtle.dropDown() end end end end end end function checkIfDone() output = peripheral.wrap('bottom') for i = 1, output.size(), 1 do if output.getItemDetail(i) then item = output.getItemDetail(i) if item.count == item.maxCount then return true end end end return false end local function main() print('Initializing...') while not checkIfDone() do print('Iterating...') placeBreeder() sleep() while peripheral.wrap('top').getItemDetail(4) == nil do sleep() end end print('Breeding complete') end main()