Updated the file to support modules.lua and check fuel
The app now checks if it has enough fuel and if not, it asks for more. Additionally it digs everythin in front of it, except for the last block.
This commit is contained in:
parent
58f282e0bf
commit
591b06aa19
@ -1,71 +1,82 @@
|
|||||||
--[[Tree Farming App by Al Sweigart
|
--[[Tree Farming App by Al Sweigart
|
||||||
Plants tree and cuts it down.]]
|
Plants tree and cuts it down.]]
|
||||||
|
|
||||||
os.loadAPI('hare.lua') -- Load the hare module
|
os.loadAPI('modules.lua') -- Load the modules module
|
||||||
|
|
||||||
local NUM_OF_TREES = 4
|
local NUM_OF_TREES = 4
|
||||||
local TREE_SAPLING = 'spruce'
|
local TREE_SAPLING = 'oak'
|
||||||
|
|
||||||
-- Check if choptree program exists
|
-- Check if choptree program exists
|
||||||
if not fs.exists('choptree.lua') then
|
if not fs.exists('choptree.lua') then
|
||||||
error('You must install choptree app first')
|
error('You must install choptree app first')
|
||||||
end
|
end
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
-- First of all, wait a few minutes
|
-- First of all, wait a few minutes
|
||||||
os.sleep(300)
|
os.sleep(300)
|
||||||
-- Check if turtle has enough fuel
|
|
||||||
if turtle.getFuelLevel() < (2 * (3 * NUM_OF_TREES)) then
|
-- Sort all Items together
|
||||||
hare.selectItem('minecraft:' .. TREE_SAPLING .. 'log')
|
modules.sort_items()
|
||||||
turtle.refuel(2)
|
|
||||||
|
|
||||||
|
-- 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)
|
||||||
|
turtle.drop()
|
||||||
end
|
end
|
||||||
|
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
|
-- Check if we have saplings in our inventory
|
||||||
turtle.select(i)
|
if not modules.select_item('minecraft:' .. TREE_SAPLING .. '_sapling') then
|
||||||
turtle.drop()
|
error('Out of ' .. TREE_SAPLING .. ' saplings')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Build a Loop, where we plant and cut trees
|
||||||
|
turtle.turnLeft()
|
||||||
|
turtle.turnLeft()
|
||||||
|
for i = 1, NUM_OF_TREES do
|
||||||
|
for j = 1, 3 do
|
||||||
|
check_fuel()
|
||||||
|
if i ~= 3 * NUM_OF_TREES then
|
||||||
|
turtle.dig()
|
||||||
|
end
|
||||||
|
turtle.forward()
|
||||||
end
|
end
|
||||||
|
turtle.turnLeft()
|
||||||
|
blockExists, item = turtle.inspect()
|
||||||
-- Check if we have saplings in our inventory
|
if blockExists and item['name'] == 'minecraft:' .. TREE_SAPLING .. '_log' then
|
||||||
if not hare.selectItem('minecraft:' .. TREE_SAPLING .. '_sapling') then
|
modules.selectEmptySlot()
|
||||||
error('Out of ' .. TREE_SAPLING .. ' saplings')
|
shell.run('choptree.lua') -- Run Choptree
|
||||||
|
elseif blockExists and item['name'] ~= 'minecraft:' .. TREE_SAPLING .. '_sapling' then
|
||||||
|
print('Error! Wrong block')
|
||||||
|
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()
|
||||||
|
modules.selectItem('minecraft:' .. TREE_SAPLING .. '_sapling')
|
||||||
|
turtle.place()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
turtle.turnRight()
|
||||||
|
end
|
||||||
|
|
||||||
-- Build a Loop, where we plant and cut trees
|
-- Move forward to the chest again
|
||||||
for i = 1, NUM_OF_TREES do
|
turtle.turnLeft()
|
||||||
turtle.back()
|
turtle.turnLeft()
|
||||||
turtle.back()
|
for i = 1, (3 * NUM_OF_TREES) do
|
||||||
turtle.back()
|
check_fuel()
|
||||||
turtle.turnRight()
|
if i ~= 3 * NUM_OF_TREES then
|
||||||
blockExists, item = turtle.inspect()
|
turtle.dig()
|
||||||
if blockExists and item['name'] == 'minecraft:' .. TREE_SAPLING .. '_log' then
|
|
||||||
hare.selectEmtySlot()
|
|
||||||
shell.run('choptree.lua') -- Run Choptree
|
|
||||||
elseif blockExists and item['name'] ~= 'minecraft:' .. TREE_SAPLING .. '_sapling' then
|
|
||||||
print('Error! Wrong block')
|
|
||||||
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()
|
|
||||||
hare.selectItem('minecraft:' .. TREE_SAPLING .. '_sapling')
|
|
||||||
turtle.place()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
turtle.turnLeft()
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Move forward to the chest again
|
|
||||||
for i = 1, (3 * NUM_OF_TREES) do
|
|
||||||
turtle.forward()
|
|
||||||
end
|
end
|
||||||
|
turtle.foward()
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user