From 8a3bd602c8857daeb7422c42a0cc3bef37619322 Mon Sep 17 00:00:00 2001 From: sascham Date: Sun, 20 Dec 2020 21:58:06 +0000 Subject: [PATCH] Initial commit --- Tree_Farm/treeline.lua | 98 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 Tree_Farm/treeline.lua diff --git a/Tree_Farm/treeline.lua b/Tree_Farm/treeline.lua new file mode 100644 index 0000000..c2f98fd --- /dev/null +++ b/Tree_Farm/treeline.lua @@ -0,0 +1,98 @@ +--[[ +treeline program by The_Lux +This program checks a tree farm with given length and chops the tree down +when it finds one. +]] + +os.loadAPI('modules.lua') -- Load the modules module + +-- Handle command line arguments +local cliArgs = {...} +local num_of_trees = tonumber(cliArgs[1]) +local tree_distance = tonumber(cliArgs[2]) +local tree_sapling = cliArgs[3] + +if num_of_trees == nil or tree_distance == nil or tree_sapling == nil or cliArgs[1] == '?' then + print('Usage: treeline.lua ') + print('num_of_trees = How many trees a in a line.') + print('tree_distance = How much space (+1) are in between the trees.') + print('tree_sapling = What sapling to use.') + return +end + + +-- Empty everything except for the saplings +for i = 1, 16 do + local item = turtle.getItemDetail(i) + + if item ~= nil and item['name'] ~= 'minecraft:' .. tree_sapling .. '_sapling' then + turtle.select(i) + print('Dropping ' .. item['name']) + turtle.drop() + end +end + + +-- Check if we have saplings in our inventory +if not modules.select_item('minecraft:' .. tree_sapling .. '_sapling') then + print('Out of ' .. tree_sapling .. ' saplings. Please provide additional saplings') + print('Press Enter when additional sapling are filled.') + read() +end + +-- Check if we have enough fuel to make our way and come back to start +needed_fuel = (num_of_trees * tree_distance) * 2 +while turtle.getFuelLevel() <= needed_fuel do + print('Not enough fuel to farm and come back.') + print('We need ' .. (needed_fuel - turtle.getFuelLevel()) .. ' additional fuel.') + print('Please put fuel in slot 1 and press a enter.') + read() + turtle.select(1) + turtle.refuel() +end + + +for i = 1, num_of_trees do + for j = 1, tree_distance do + -- check if something is in your way and dig it up + if i ~= (tree_distance * num_of_trees) then + turtle.dig() + end + turtle.forward() + end + turtle.turnLeft() + blockExists, item = turtle.inspect() + if blockExists and item['name'] == 'minecraft:' .. tree_sapling .. '_log' then + print('Cutting tree...') + turtle.dig() + print('Planting seed.') + modules.select_item('minecraft:' .. tree_sapling .. '_sapling') + turtle.place() + elseif not blockExists then + turtle.forward() + local success, underneath = turtle.inspectDown() + if underneath['name'] ~= 'minecraft:dirt' and underneath['name'] ~= 'minecraft:grass_block' then + print('Error. No Dirt or Grass underneath to plant a tree. Found: ' .. underneath['name']) + turtle.back() + else + turtle.back() + print('Planting seed.') + modules.select_item('minecraft:' .. tree_sapling .. '_sapling') + turtle.place() + end + end + turtle.turnRight() +end + +-- Move forward to the chest again +turtle.turnLeft() +turtle.turnLeft() +print('Heading back to start.') +for i = 1, (tree_distance * num_of_trees) do + if i ~= (tree_distance * num_of_trees) then + turtle.dig() + end + turtle.forward() +turtle.turnLeft() +turtle.turnLeft() +end \ No newline at end of file