Advertisement
DanchiZZ

extmineapi 0.2

Jan 3rd, 2013
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- digging forward while detecting blocks
  2. function tryDigForward()
  3.   logger.trace("trying dig forward...")
  4.   if turtle.dig() then
  5.     logger.debug("dig forward");
  6.   end
  7. end
  8.  
  9. -- digging up while detected blocks
  10. function tryDigUp()
  11.   logger.trace("trying dig up...")
  12.   if turtle.digUp() then
  13.     logger.debug("dig up");
  14.   end
  15. end
  16.  
  17. -- attacking while mob detected.
  18. function tryAttack()
  19.   logger.trace("trying attack...")
  20.   while turtle.attack() do
  21.     logger.debug("attacking!")
  22.   end
  23. end
  24.  
  25. -- just dig gown if it isn't a chest
  26. function tryDigDown()
  27.   logger.trace("trying dig down...")
  28.   turtle.select(14)
  29.   if not turtle.compareDown() then
  30.     if turtle.digDown() then
  31.       logger.debug("dig down")
  32.     end
  33.   end
  34. end
  35.  
  36. -- placing torch in the left wall.
  37. -- returns false if torches is out.
  38. -- required slot 15.
  39. function tryPlaceTorch()
  40.   logger.debug("trying place torch")
  41.   if turtle.getItemCount(15) < 1 then
  42.     logger.info("torches is out!")
  43.     return false
  44.   end
  45.   turtle.turnRight()
  46.   turtle.select(15)
  47.   tryAttack()
  48.   turtle.dig()
  49.   if turtle.place() then
  50.     logger.debug("torch placed")
  51.   end
  52.   turtle.turnLeft()
  53.   return true
  54. end
  55.  
  56. -- trying refuel if fuel level < 200.
  57. -- returns false if fuel is out.
  58. -- required slot 16.
  59. function tryRefuel()
  60.   while turtle.getFuelLevel() < 40 do
  61.     if turtle.getItemCount(16) < 1 then
  62.       logger.info("reserve fuel is out!")
  63.       return false
  64.     end
  65.     turtle.select(16)
  66.     turtle.refuel(1)
  67.   end
  68.   return true
  69. end
  70.  
  71. -- checking free space, placing chest
  72. -- and transfering all items. returns
  73. -- false if chests is out. required slot 14.
  74. function tryGetFreeSpace()
  75.   if turtle.getItemCount(12) > 0 then
  76.     logger.info("need free space")
  77.     if turtle.getItemCount(14) < 1 then
  78.       logger.info("chests is out")
  79.       return false
  80.     end
  81.     turtle.select(14)
  82.     turtle.digDown()
  83.     turtle.placeDown()
  84.     for i = 1, 13 do
  85.       turtle.select(i)
  86.       turtle.dropDown(64)
  87.     end
  88.     logger.info("items transfered to chest")
  89.     turtle.select(1)
  90.   end
  91.   return true
  92. end
  93.  
  94.  
  95. function stop()
  96.   logger.error("Check chests, torches and fuel!")
  97. end
  98.  
  99. -- turtle doing "count" step forward, dig
  100. -- all blocks by the way, attacks detected
  101. -- mobs, placing torch, refueling and
  102. -- dig friable blocks by top if "isDigFriable"
  103. function step(count)
  104.   count = count + 1
  105.   count = count - 1
  106.   logger.info("step("..count..") working...")
  107.   local iter = 0
  108.   for i = 1, count do
  109.     logger.trace("step: "..i)
  110.     if not tryRefuel() then break end
  111.     tryDigUp()
  112.     tryDigDown()
  113.     if not tryGetFreeSpace() then em:stop() break end
  114.     while turtle.forward() == false do
  115.       tryDigForward()
  116.       tryAttack()
  117.     end
  118.     logger.debug("moved by 1 block")
  119.     iter = i
  120.     if i % 10 == 6 then
  121.       if not tryPlaceTorch() then em:stop() break end
  122.     end
  123.   end
  124.   logger.info("step("..iter..") of "..count.." done")
  125.   if iter == count then return true
  126.   else return false end
  127. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement