Add mower script.
This commit is contained in:
parent
0308116109
commit
162198e777
1 changed files with 85 additions and 0 deletions
85
mower.lua
Normal file
85
mower.lua
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
--[[
|
||||||
|
This script will make a turtle into a mower!
|
||||||
|
It will drive in a zigzag pattern in the field and remove weeds.
|
||||||
|
You can choose which objects it will destroy by changing the
|
||||||
|
appropriate string below. In order to dig, you also need to place a tool
|
||||||
|
in slot 1 of the turtle.
|
||||||
|
|
||||||
|
Copyright 2016, George Kaklamanos <gkaklas1@gmail.com>
|
||||||
|
You may use this script under the terms of the
|
||||||
|
GNU General Public License version 3 or later.
|
||||||
|
For more info please read the LICENSE, which is included in this repository.
|
||||||
|
--]]
|
||||||
|
|
||||||
|
|
||||||
|
-- Select the item in slot 1 and equip the right hand side with it.
|
||||||
|
turtle.select(1)
|
||||||
|
turtle.equipRight(1)
|
||||||
|
|
||||||
|
goRight = true
|
||||||
|
while true do
|
||||||
|
success = moveAndDestroy()
|
||||||
|
if not success then
|
||||||
|
changeRow()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Is the block in front of us of the kind we want to destroy?
|
||||||
|
function wantedBlock()
|
||||||
|
local s,data = turtle.inspect()
|
||||||
|
return data["name"] == "minecraft:yellow_flower"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Move forward one block, dig if necessary.
|
||||||
|
function moveAndDestroy()
|
||||||
|
local success
|
||||||
|
if wantedBlock() then
|
||||||
|
turtle.dig()
|
||||||
|
end
|
||||||
|
if not turtle.detect() then
|
||||||
|
success = turtle.forward()
|
||||||
|
end
|
||||||
|
return success
|
||||||
|
end
|
||||||
|
|
||||||
|
function turn()
|
||||||
|
if goRight then
|
||||||
|
turtle.turnRight()
|
||||||
|
else
|
||||||
|
turtle.turnLeft()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function antiturn()
|
||||||
|
if goRight then
|
||||||
|
turtle.turnLeft()
|
||||||
|
else
|
||||||
|
turtle.turnRight()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Move to the next row of the zigzag pattern.
|
||||||
|
function changeRow()
|
||||||
|
local success
|
||||||
|
-- Turn towards the right direction
|
||||||
|
turn()
|
||||||
|
-- If something is blocking the way, go around it.
|
||||||
|
while not moveAndDestroy() do
|
||||||
|
turn()
|
||||||
|
moveAndDestroy()
|
||||||
|
antiturn()
|
||||||
|
end
|
||||||
|
-- Now we are in the next row, let's go to the beginning of it.
|
||||||
|
antiturn()
|
||||||
|
repeat
|
||||||
|
success = moveAndDestroy()
|
||||||
|
until not success
|
||||||
|
|
||||||
|
-- Turn around, towards the end of the row.
|
||||||
|
turn()
|
||||||
|
turn()
|
||||||
|
|
||||||
|
goRight = not goRight
|
||||||
|
end
|
||||||
|
|
Reference in a new issue