Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- digging forward while detecting blocks
- function tryDigForward()
- logger.trace("trying dig forward...")
- if turtle.dig() then
- logger.debug("dig forward");
- end
- end
- -- digging up while detected blocks
- function tryDigUp()
- logger.trace("trying dig up...")
- if turtle.digUp() then
- logger.debug("dig up");
- end
- end
- -- attacking while mob detected.
- function tryAttack()
- logger.trace("trying attack...")
- while turtle.attack() do
- logger.debug("attacking!")
- end
- end
- -- just dig gown if it isn't a chest
- function tryDigDown()
- logger.trace("trying dig down...")
- turtle.select(14)
- if not turtle.compareDown() then
- if turtle.digDown() then
- logger.debug("dig down")
- end
- end
- end
- -- placing torch in the left wall.
- -- returns false if torches is out.
- -- required slot 15.
- function tryPlaceTorch()
- logger.debug("trying place torch")
- if turtle.getItemCount(15) < 1 then
- logger.info("torches is out!")
- return false
- end
- turtle.turnRight()
- turtle.select(15)
- tryAttack()
- turtle.dig()
- if turtle.place() then
- logger.debug("torch placed")
- end
- turtle.turnLeft()
- return true
- end
- -- trying refuel if fuel level < 200.
- -- returns false if fuel is out.
- -- required slot 16.
- function tryRefuel()
- while turtle.getFuelLevel() < 40 do
- if turtle.getItemCount(16) < 1 then
- logger.info("reserve fuel is out!")
- return false
- end
- turtle.select(16)
- turtle.refuel(1)
- end
- return true
- end
- -- checking free space, placing chest
- -- and transfering all items. returns
- -- false if chests is out. required slot 14.
- function tryGetFreeSpace()
- if turtle.getItemCount(12) > 0 then
- logger.info("need free space")
- if turtle.getItemCount(14) < 1 then
- logger.info("chests is out")
- return false
- end
- turtle.select(14)
- turtle.digDown()
- turtle.placeDown()
- for i = 1, 13 do
- turtle.select(i)
- turtle.dropDown(64)
- end
- logger.info("items transfered to chest")
- turtle.select(1)
- end
- return true
- end
- function stop()
- logger.error("Check chests, torches and fuel!")
- end
- -- turtle doing "count" step forward, dig
- -- all blocks by the way, attacks detected
- -- mobs, placing torch, refueling and
- -- dig friable blocks by top if "isDigFriable"
- function step(count)
- count = count + 1
- count = count - 1
- logger.info("step("..count..") working...")
- local iter = 0
- for i = 1, count do
- logger.trace("step: "..i)
- if not tryRefuel() then break end
- tryDigUp()
- tryDigDown()
- if not tryGetFreeSpace() then em:stop() break end
- while turtle.forward() == false do
- tryDigForward()
- tryAttack()
- end
- logger.debug("moved by 1 block")
- iter = i
- if i % 10 == 6 then
- if not tryPlaceTorch() then em:stop() break end
- end
- end
- logger.info("step("..iter..") of "..count.." done")
- if iter == count then return true
- else return false end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement