CCCPaste

seedProducer.lua

local directions = {"north", "south", "east", "west"}
local curDir = 1



local function getDir()
local file = fs.open("curDir", "r")
	if file then
		local savedDir = file.readAll()
		for k, dir in pairs(directions) do
			if savedDir == dir then
				curDir = k
			end
		end
	end
end



local function turn(dir)
	while directions[curDir] ~= dir do
		if turtle.turnRight() then
			curDir = curDir + 1
			if curDir == 5 then
				curDir = 1
			end
			
			local file = fs.open("curDir", "w")
			file.write(directions[curDir])
			file.flush()
			file.close()
		end
	end
end



local function startup()
	getDir()
end



local function clearInventory()
	turn("east")
	for i = 1, 16 do
		local item = turtle.getItemDetail(i)
		if item then
			if item.name ~= "minecraft:bone_meal" then
				turtle.select(i)
				turtle.drop()
			end
		end
	end
end



local function collectDrops()
	repeat
	until not turtle.suck()
end



local function growPlant()
	turn("north")
	repeat
	until not turtle.suckUp()
	
	for i = 1, 16 do
		local item = turtle.getItemDetail(i)
		if item then
			if item.name == "minecraft:bone_meal" then
				turtle.select(i)
				repeat
					if math.random(1,10) == 10 then
						collectDrops()
					end
				until not turtle.place()
				collectDrops()
			end
		end
	end
end



local function feedChicken()
	turn("south")
	
	for i = 1, 16 do
		local item = turtle.getItemDetail(i)
		if item then
			if item.name:match("chicken_food") then
				turtle.select(i)
				if not turtle.drop() then
					break
				end
			end
		end
	end
end



local function produceBoneMeal()
	turn("south")
	
	local hasBones = false
	for i = 1, 16 do
		local item = turtle.getItemDetail(i)
		if item then
			if item.name == "minecraft:bone" then
				hasBones = true
			end
		end
	end
	
	if not hasBones then
		turtle.suck()
	end
	
	for i = 1, 16 do
		local item = turtle.getItemDetail(i)
		if item then
			if item.name == "minecraft:bone" then
				turtle.select(i)
				if not turtle.dropUp() then
					break
				end
			end
		end
	end
end



local function main()
	while true do
		clearInventory()
		growPlant()
		feedChicken()
		produceBoneMeal()
	end
end



startup()
main()