-- See README for usage info -- https://git.desu.ltd/salt/mc-scripts/src/branch/master/stoneblock-3-chicken-breeder/README.md -- Breaks and replaces the breeder on top of the turtle -- This is called after every generation function placeBreeder() print('Initializing breeder...') breeder = peripheral.wrap('top') -- This ensures that we have the new generation chicken in slot 1 turtle.select(1) turtle.suckUp() -- Then we select the next slot and bop the breeder turtle.select(2) turtle.digUp() -- Why are we discarding slot 2? Because, by design, it MUST be the trash -- chicken from the last generation. breeder.pushItems('bottom', 2) 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()