Advertisement
gghf

main

Jul 14th, 2022 (edited)
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.41 KB | None | 0 0
  1. ---@diagnostic disable: param-type-mismatch
  2. -- imports
  3. local ul = require("unload")
  4. local dR = require("doRefuel")
  5. local tF = require("tryForwards")
  6. local tD = require("tryDown")
  7. local tu = require("turn")
  8. local gT = require("goTo")
  9.  
  10. -- init global var
  11. depth = 0
  12. unloaded = 0
  13. collected = 0
  14.  
  15. xPos, zPos = 0, 0
  16. xDir, zDir = 0, 1
  17.  
  18. -- init local var
  19. local size
  20. local alternate = 0
  21. local done = false
  22. local reseal = false    -- slot 1 needs to be a placeable block if resealing is desired
  23.  
  24. -- -- -- -- --
  25. -- execute --
  26. -- -- -- -- --
  27.  
  28. -- Mine in a quarry pattern until we hit something we can't dig
  29. print("Please enter the diameter of the bore. Positive natural numbers only:")
  30. size = tonumber(io.read())
  31. if size < 1 then
  32.     print("Excavate diameter must be positive")
  33.     return
  34. end
  35.  
  36. if not dR.doRefuel() then
  37.     print("Out of Fuel")
  38.     return
  39. end
  40.  
  41. print("Excavating...")
  42.  
  43. turtle.select(1)
  44. if turtle.digDown() then
  45.     reseal = true
  46. end
  47.  
  48. while not done do
  49.     for n = 1, size do
  50.         for m = 1, size - 1 do
  51.             if not tF.tryForwards() then
  52.                 done = true
  53.                 break
  54.             end
  55.         end
  56.         if done then
  57.             break
  58.         end
  59.         if n < size then
  60.             if math.fmod(n + alternate, 2) == 0 then
  61.                 tu.turnLeft()
  62.                 if not tF.tryForwards() then
  63.                     done = true
  64.                     break
  65.                 end
  66.                 tu.turnLeft()
  67.             else
  68.                 tu.turnRight()
  69.                 if not tF.tryForwards() then
  70.                     done = true
  71.                     break
  72.                 end
  73.                 tu.turnRight()
  74.             end
  75.         end
  76.     end
  77.     if done then
  78.         break
  79.     end
  80.  
  81.     if size > 1 then
  82.         if math.fmod(size, 2) == 0 then
  83.             tu.turnRight()
  84.         else
  85.             if alternate == 0 then
  86.                 tu.turnLeft()
  87.             else
  88.                 tu.turnRight()
  89.             end
  90.             alternate = 1 - alternate
  91.         end
  92.     end
  93.  
  94.     if not tD.tryDown() then
  95.         done = true
  96.         break
  97.     end
  98. end
  99.  
  100. print("Returning to surface...")
  101.  
  102. -- Return to where we started
  103. gT.goTo(0, 0, 0, 0, -1)
  104. ul.unload(false)
  105. gT.goTo(0, 0, 0, 0, 1)
  106.  
  107. -- Seal the hole
  108. if reseal then
  109.     turtle.placeDown()
  110. end
  111.  
  112. print("Mined " .. (collected + unloaded) .. " items total.")
  113.  
  114. shell.setDir("/")
  115.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement