local FUEL_SLOT = 16 local SAPLING_SLOT = 15 local BONEMEAL_SLOT = 14 local TOP_LIMIT = 15 local GRID_SIZE = 6 local function turn_around() turtle.turnLeft() turtle.turnLeft() end local function forward(times) for i = 1, times do turtle.forward() end end function find_top() local distance_up = 0 local success_up, block_data_up = turtle.inspectUp() turtle.turnRight() while not success_up and distance_up < TOP_LIMIT do turtle.dig() turtle.up() distance_up = distance_up + 1 success_up, block_data_up = turtle.inspectUp() end success_up, block_data_up = turtle.inspectUp() while success_up and block_data_up and distance_up < TOP_LIMIT do turtle.digUp() turtle.dig() turtle.up() distance_up = distance_up + 1 success_up, block_data_up = turtle.inspectUp() end turtle.dig() return distance_up end function return_ground_fell(ground_distance) turn_around() for travel = 1, ground_distance do turtle.dig() turtle.down() end turn_around() end function return_ground(ground_distance) for travel = 1, ground_distance do turtle.down() end end function wrap_around() turtle.forward() turtle.turnLeft() turtle.forward() turtle.forward() turtle.turnLeft() end function remove_wood(top_distance) turtle.dig() turtle.forward() for y = 1, top_distance do turtle.digUp() turtle.dig() turtle.turnLeft() turtle.dig() turtle.turnRight() turtle.up() end turtle.dig() turtle.forward() turtle.turnLeft() turtle.dig() turtle.forward() for y = 1, top_distance do turtle.digDown() turtle.down() end turn_around() turtle.forward() turtle.forward() end function fell_tree() for i = 1, 3 do local top_distance = find_top() return_ground_fell(top_distance) wrap_around() end local top_distance = find_top() return_ground_fell(top_distance) turtle.turnLeft() remove_wood(top_distance) end function grid_turn(isEvenRow) if isEvenRow then turtle.turnRight() else turtle.turnLeft() end end function check_grid() local isEvenRow = false turtle.forward() turtle.turnLeft() forward(2) turtle.turnLeft() for y = 1, GRID_SIZE do for x = 1, GRID_SIZE do turtle.suck() turtle.forward() turtle.suck() end if y < 6 then grid_turn(isEvenRow) turtle.suck() turtle.forward() turtle.suck() grid_turn(isEvenRow) end isEvenRow = not isEvenRow end turtle.turnLeft() forward(3) turtle.turnRight() end function operate_check() local insp_true, block_data = turtle.inspect() local foward_amount = 0 if insp_true and block_data and block_data.name == "minecraft:dark_oak_sapling" then turn_around() foward_amount = 12 else fell_tree() check_grid() foward_amount = 11 end return foward_amount end function check_trees() local foward_amount = 0 forward(6) turtle.turnLeft() forward(6) -- First tree row foward_amount = operate_check() forward(foward_amount) foward_amount = operate_check() forward(foward_amount) turtle.turnRight() forward(6) turtle.turnLeft() forward(6) -- Second tree row foward_amount = operate_check() forward(foward_amount) foward_amount = operate_check() forward(foward_amount) -- Return home forward(12) end function main() check_trees() end main()