Upload files to 'Turtle'

This commit is contained in:
manuel 2023-01-08 16:28:07 +00:00
parent 2931ca0816
commit d46d80d6f2

250
Turtle/movement.lua Normal file
View File

@ -0,0 +1,250 @@
function digForward()
while turtle.forward() ~= true do turtle.dig() end
end
function detectTree()
if turtle.detect() == false then return false end
local has_block, data = turtle.inspect()
if data.tags["minecraft:logs"] == true then
return true
end
return false
end
function plant4()
if countItem(Sappling) >= 4 then
digForward()
digForward()
turtle.turnLeft()
selectItem(Sappling)
turtle.place()
turtle.turnRight()
digBack()
selectItem(Sappling)
turtle.place()
turtle.turnLeft()
selectItem(Sappling)
turtle.place()
turtle.turnRight()
digBack()
selectItem(Sappling)
turtle.place()
return true
end
return false
end
function goToStart(startPos)
d = getDif(startPos)
success = true
for i = 1, 3 do -- check if it's already at the right position
if d[i] ~= 0 then success = false end
end
if success == true then return true end
if d[2] > 0 then -- check if it's too high (too low won't be programmed since the turtle should never go below the startposition)
while d[2] > 0 do
if not turtle.detectDown then success = turtle.down() -- if no block is below the turtle tries to move down
else
if detectWoodDown() then
avoidWoodDown()
else
turtle.digDown()
success = turtle.down()
end
end
if success then d[2] = d[2] - 1 end -- if the turtle moved down then subtract 1
end
end
-- get x cords right
faceDir(4)
d = getDif(startPos)
while d[1] > 0 do
safeForward()
d = getDif(startPos)
end
turtle.turnRight()
turtle.turnRight()
while d[1] < 0 do
safeForward()
d = getDif(startPos)
end
d = getDif(startPos)
turtle.turnLeft()
while d[3] > 0 do
safeForward()
d = getDif(startPos)
end
turtle.turnLeft()
turtle.turnLeft()
while d[3] < 0 do
safeForward()
d = getDif(startPos)
end
turtle.turnRight()
success = true
for i = 1, 3 do -- check if it's already at the right position
if d[i] ~= 0 then success = false end
end
if success == true then return true end
return false
end
function getDir()
local x, y, z = gps.locate()
local initPos = {x,y,z}
while turtle.forward() == false do
if turtle.detect() == true then
if detectWood() then
turtle.turnRight()
else
turtle.dig()
end
end
end
x, y, z = gps.locate()
digBack()
local newPos = {x,y,z}
if initPos[3]-newPos[3] == 1 then dir = 1
elseif initPos[3]-newPos[3] == -1 then dir = 3
elseif initPos[1]-newPos[1] == -1 then dir = 2
else dir = 4 end
return dir
end
function faceDir(newDir, oldDir)
if (type(oldDir) ~= "number") then
oldDir = getDir()
end
i = (newDir - oldDir)%4
while i > 0 do
turtle.turnRight()
i = i - 1
end
end
function digBack()
turtle.turnLeft()
turtle.turnLeft()
digForward()
turtle.turnRight()
turtle.turnRight()
end
function digUp()
while turtle.up() ~= true do turtle.digUp() end
end
function digDown()
while turtle.down() ~= true do turtle.digDown() end
end
function moveTo(xTarget, yTarget, zTarget, dirTarget, dirCurrent)
local x, y, z = gps.locate()
local dir
if (type(dirCurrent) == "number") then
dir = dirCurrent
else
dir = getDir()
end
local toGo
if (yTarget > y) then
toGo = yTarget -y
while (toGo > 0) do
digUp()
toGo = toGo - 1
end
else
toGo = y - yTarget
while (toGo > 0) do
digDown()
toGo = toGo - 1
end
end
if (xTarget - x > 0) then
faceDir(2, dir)
dir = 2
toGo = xTarget - x
else
faceDir(4, dir)
dir = 4
toGo = x -xTarget
end
while toGo > 0 do
digForward()
toGo = toGo -1
end
if (zTarget - z > 0) then
faceDir(3, dir)
dir = 3
toGo = zTarget -z
else
faceDir(1, dir)
dir = 1
toGo = z - zTarget
end
while toGo > 0 do
digForward()
toGo = toGo -1
end
faceDir(dirTarget, dir)
end
function hoverTo(xTarget, yTarget, zTarget, dirTarget, dirCurrent)
local x, y, z = gps.locate()
local dir
if (type(dirCurrent) == "number") then
dir = dirCurrent
else
dir = getDir()
end
local toGo
if (xTarget - x > 0) then
faceDir(2, dir)
dir = 2
toGo = xTarget - x
else
faceDir(4, dir)
dir = 4
toGo = x -xTarget
end
while toGo > 0 do
digForward()
toGo = toGo -1
end
if (zTarget - z > 0) then
faceDir(3, dir)
dir = 3
toGo = zTarget -z
else
faceDir(1, dir)
dir = 1
toGo = z - zTarget
end
while toGo > 0 do
digForward()
toGo = toGo -1
end
if (yTarget > y) then
toGo = yTarget -y
while (toGo > 0) do
digUp()
toGo = toGo - 1
end
else
toGo = y - yTarget
while (toGo > 0) do
digDown()
toGo = toGo - 1
end
end
faceDir(dirTarget, dir)
end