Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local self = turtle
- local slots = {
- seeds = 1,
- bonemeal = 2,
- fuel = 3
- }
- local waitTill
- waitTill = function(condition, compare, callback)
- if compare == nil then
- compare = true
- end
- while condition() ~= compare do
- if callback then
- callback()
- end
- os.sleep(0.1)
- end
- return true
- end
- self.fuel = function(amount)
- if amount == nil then
- amount = 100
- end
- local old = 1
- while self:getFuelLevel() < amount do
- print('Fuel level to low, put fuel in slot 16')
- self:select(slots.fuel)
- self:refuel()
- os.sleep(1)
- end
- return self:select(old)
- end
- self.forward = function(steps)
- if steps == nil then
- steps = 1
- end
- if steps < 1 then
- return true
- end
- self:fuel()
- waitTill(turtle.forward, true)
- return self:forward(steps - 1)
- end
- self.up = function(steps)
- if steps == nil then
- steps = 1
- end
- if steps < 1 then
- return true
- end
- self:fuel()
- waitTill(turtle.up, true)
- return up(steps - 1)
- end
- self.down = function(steps)
- if steps == nil then
- steps = 1
- end
- if steps < 1 then
- return true
- end
- self:fuel()
- waitTill(turtle.down, true)
- return down(steps - 1)
- end
- self.emptyDown = function(first, last)
- if first == nil then
- first = 1
- end
- if last == nil then
- last = 16
- end
- for slot = first, last do
- self:select(slot)
- self:dropDown()
- end
- end
- self.fertilize = function()
- local initial = self:getItemCount(slots.bonemeal)
- if initial < 2 then
- return false
- end
- self:select(slots.bonemeal)
- self:placeDown()
- if initial ~= self:getItemCount(slots.bonemeal) then
- self:fertilize()
- end
- return true
- end
- self.step = function()
- while not self:fertilize() do
- os.sleep(0.5)
- end
- self:select(slots.seeds)
- self:digDown()
- return self:forward()
- end
- self:forward()
- while self:detectDown() do
- self:step()
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement