Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. local tArgs = {...}
  2. if #tArgs ~= 1 then
  3. print("Usage: makeroom <size>")
  4. return
  5. end
  6. -- Mine in a spiral pattern
  7. local size = tonumber(tArgs[1])
  8. if size < 1 then
  9. print("Room size must be positive")
  10. return
  11. end
  12.  
  13. local collected = 0
  14. local function collect()
  15. collected = collected + 1
  16. if math.fmod(collected, 25) == 0 then
  17. print("Mined " .. collected .. " items.")
  18. end
  19. end
  20. local function tryDig()
  21. while turtle.detect() do
  22. if turtle.dig() then
  23. collect()
  24. sleep(0.5)
  25. else
  26. return false
  27. end
  28. end
  29. return true
  30. end
  31.  
  32. local function tryDigUp()
  33. while turtle.detectUp() do
  34. if turtle.digUp() then
  35. collect()
  36. sleep(0.5)
  37. else
  38. return false
  39. end
  40. end
  41. return true
  42. end
  43.  
  44. local function refuel()
  45. local fuelLevel = turtle.getFuelLevel()
  46. if fuelLevel == "unlimited" or fuelLevel > 0 then return end
  47.  
  48. local function tryRefuel()
  49. for n = 1, 16 do
  50. if turtle.getItemCount(n) > 0 then
  51. turtle.select(n)
  52. if turtle.refuel(1) then
  53. turtle.select(1)
  54. return true
  55. end
  56. end
  57. end
  58. turtle.select(1)
  59. return false
  60. end
  61.  
  62. if not tryRefuel() then
  63. print("Add more fuel to continue.")
  64. while not tryRefuel() do sleep(1) end
  65. print("Resuming Room.")
  66. end
  67. end
  68.  
  69. local function tryUp()
  70. refuel()
  71. while not turtle.up() do
  72. if turtle.detectUp() then
  73. if not tryDigUp() then return false end
  74. elseif turtle.attackUp() then
  75. collect()
  76. else
  77. sleep(0.5)
  78. end
  79. end
  80. return true
  81. end
  82.  
  83. local function tryForward()
  84. refuel()
  85. while not turtle.forward() do
  86. if turtle.detect() then
  87. if not tryDig() then return false end
  88. elseif turtle.attack() then
  89. collect()
  90. else
  91. sleep(0.5)
  92. end
  93. end
  94. return true
  95. end
  96.  
  97. local function digLoop()
  98. n = 1
  99. while n < size do
  100. channelForward(n)
  101. turtle.turnRight()
  102. channelForward(n)
  103. turtle.turnRight()
  104. n = n + 1
  105. if (n >= size) then
  106. write("Would you like this any bigger? (Y/n)")
  107. if (read():lower() == "y") then
  108. write("How much bigger?")
  109. size = tonumber(read())
  110. n = 1
  111. end
  112. end
  113. end
  114. end
  115.  
  116. local function channelForward(length)
  117. refuel()
  118. for i = 1, length do
  119. tryDigUp()
  120. tryForward()
  121. end
  122. return true
  123. end
  124. print("Making Room...")
  125. digLoop()
  126. channelForward(n - 1)
  127. tryDigUp()
  128. print("Room complete.")
  129. print("Mined " .. collected .. " items total.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement