Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local lib = {}
- lib.blocks = {}
- lib.blocks["minecraft:cobble"] = "path"
- lib.blocks["minecraft:stone"] = "refuel"
- lib.blocks["minecraft:sand"] = "tree"
- lib.blocks["minecraft:gravel"] = "clear"
- lib.blocks["minecraft:clay"] = "left"
- lib.blocks["minecraft:pumpkin"] = "right"
- lib.blocks["minecraft:bedrock"] = "stop"
- lib.tree_distance = 3
- lib.tree_size = 5
- lib.needed_fuel = 800
- lib.tick = 1
- function lib.coal_to_get()
- fuel_stock = turtle.getFuel()
- fuel_to_get = needed_fuel - fuel_stock
- coal_to_get = math.ceil(fuel_to_get/80)
- return math.max(coal_to_get, 0)
- end
- function lib.refuel()
- turtle.turnLeft()
- turtle.select(1)
- to_get = lib.coal_to_get()
- while to_get > 0 do
- while not turtle.suck(to_get) do sleep(lib.tick) end
- turtle.refuel()
- to_get = lib.coal_to_get()
- turtle.turnRight()
- end
- function lib.clear()
- turtle.turnLeft()
- for i = 1, 16 do
- turtle.select(i)
- turtle.drop()
- end
- turtle.turnRight()
- end
- function lib.tree()
- turtle.turnLeft()
- for i=1, lib.tree_distance do lib.digForward() end
- for i=1, lib.tree_size do lib.digUp() end
- for i=1, lib.tree_size do turtle.down() end
- for i=1, lib.tree_distance do turtle.back() end
- turtle.turnRight()
- end
- function lib.analyse(meta)
- if meta == nil then return "unknown" end
- bind = lib.blocks[meta.name]
- if bind == nil then return "unknown" end
- return bind
- end
- function lib.getBlock()
- res, meta = turtle.inspectDown()
- return lib.analyse(meta)
- end
- function lib.inspect()
- res, meta = turtle.inspect()
- return lib.analyse(meta)
- end
- function lib.init()
- while not(turtle.detectDown()) do turtle.down() end
- block = lib.getBlock()
- while block == "unknown" do
- turtle.back()
- block = lib.getBlock()
- end
- if block == "stop" then
- return false
- elseif block == "tree" then
- turtle.turnRight()
- elseif block == "refuel" or block == "clear" then
- while not(lib.inspect() == "chest") then turtle.turnLeft() end
- turtle.turnRight()
- else
- turtle.forward()
- sblock = lib.getBlock()
- while not(sblock == "flag") then
- turtle.back()
- turtle.turnRight()
- turtle.forward()
- sblock = lib.getBlock()
- end
- end
- return true
- end
- function lib.execute()
- block = lib.getBlock()
- if block == "tree" then lib.tree()
- elseif block == "left" then turtle.turnLeft()
- elseif block == "right" then turtle.turnRight()
- elseif block == "refuel" then lib.refuel()
- elseif block == "clear" then lib.clear()
- else block == "stop" then return false end
- turtle.forward()
- return true
- end
- function lib.loop()
- running = lib.init()
- while running do
- running = lib.execute()
- end
- end
- lib.loop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement