# quarryx

May 7th, 2021
572
143 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. --Original work of lmaogoaway
2. x = 1
3. y = 1
4. z = 1
5. d = 0
6. digCount = 0
7.
8. ignore = {
9.     "minecraft:stone",
10.     "minecraft:gravel",
11.     "minecraft:dirt",
12.     "minecraft:cobblestone",
13.     "minecraft:bedrock"
14. }
15.
16. print("Welcome to Little Quarry")
17. print("------------------------")
18. print("Enter dimensions of the quarry")
19.
20. print("X:")
22. print("Current Y:")
24. y = usery
25. print("Z:")
27. print("Bedrock top Y:")
28. bedrock = tonumber(read()) + 1
29.
30.
31.
32. -- function round(n)
33. --  return (n + 0.5 - (n + 0.5) % 1)
34. -- end
35. maxLayer = math.floor((usery - bedrock) / 3)
36. if (bedrock + (maxLayer) * 3) == y then
37.     maxLayer = maxLayer - 1
38. end
39.
40. if turtle.getFuelLevel() < (((maxLayer) * (userx * userz)) + (y * 2)) then
41.     print("Need atleast", (((maxLayer) * (userx * userz)) + (y * 2)), "Fuel level")
42. end
43.
44. function fatal(s)
45.     print("--FATAL ERROR--")
46.     print("er: ", s)
47.     home(true)
48.     error()
49. end
50.
51. function turn(n)
52.     n = n or 0
53.     if n == 0 and d == 3 then
54.         turtle.turnRight()
55.         d = 0
56.     elseif n == 3 and d == 0 then
57.         turtle.turnLeft()
58.         d = 3
59.     else
60.         while d < n do
61.             turtle.turnRight()
62.             d = d + 1
63.         end
64.         while d > n do
65.             turtle.turnLeft()
66.             d = d - 1
67.         end
68.     end
69. end
70.
71. function down()
72.     if not turtle.down() then
73.         dig("down")
74.         turtle.down()
75.     end
76.     y = y - 1
77. end
78.
79. function up()
80.     if not turtle.up() then
81.         dig("up")
82.         turtle.up()
83.     end
84.     y = y + 1
85. end
86.
87. function forward()
88.     if turtle.forward() then
89.         if d == 0 then
90.             z = z + 1
91.         elseif d == 1 then
92.             x = x + 1
93.         elseif d == 2 then
94.             z = z - 1
95.         elseif d == 3 then
96.             x = x - 1
97.         end
98.     else
99.         print("x:", x, "y:", y, "z:", z)
100.         fatal("cannot forward")
101.     end
102. end
103.
104. function dig(command)
105.     command = command or "forward"
106.     if command == "forward" then
107.         if turtle.detect() then
108.             while turtle.dig() do
109.                 sleep(0.2)
110.                 digCount = digCount + 1
111.             end
112.         end
113.     elseif command == "up" then
114.         if turtle.detectUp() then
115.             while turtle.digUp() do
116.                 sleep(0.2)
117.                 digCount = digCount + 1
118.             end
119.         end
120.     elseif command == "down" then
121.         if turtle.detectDown() then
122.             while turtle.digDown() do
123.                 sleep(0.2)
124.                 digCount = digCount + 1
125.             end
126.         end
127.     end
128.
129.     if digCount == 16 then
130.         if turtle.getItemCount(16) ~= 0 then
131.             tempd = d
132.             tempx = x
133.             tempy = y
134.             tempz = z
135.             home(true)
136.             gotoLayer(tempy)
137.             turn(0)
138.             while z < tempz do
139.                 forward()
140.             end
141.             turn(1)
142.             while x < tempx do
143.                 forward()
144.             end
145.             turn(tempd)
146.         end
147.         digCount = 0
148.     end
149. end
150.
151. function home(n)
152.     n = n or false
153.     i = i or false
154.     --x
155.     if x > 1 then
156.         turn(3)
157.         while x > 1 do
158.             forward()
159.         end
160.     end
161.     --z
162.     if z > 1 then
163.         turn(2)
164.         while z > 1 do
165.             forward()
166.         end
167.     end
168.     --y
169.     if n == true then
170.         turn(2)
171.         while y < usery do
172.             up()
173.         end
175.         turn(0)
176.     end
177. end
178.
180.     for i=1, 16 do
181.         turtle.select(i)
182.         turtle.drop(64)
183.     end
184.     turtle.select(1)
185. end
186.
187. function gotoLayer(n)
188.     while y > n do
189.         down()
190.     end
191.     while y < n do
192.         up()
193.     end
194. end
195.
196. function check()
197.     downS, downD = turtle.inspectDown()
198.     upS, upD = turtle.inspectUp()
199.     upCheck = false
200.     downCheck = false
201.     --up
202.     for key,value in pairs(ignore) do
203.         if upD.name == value then
204.             upCheck = true
205.             break
206.         end
207.     end
208.     if not upCheck then
209.         dig("up")
210.     end
211.     --down
212.     for key,value in pairs(ignore) do
213.         if downD.name == value then
214.             downCheck = true
215.             break
216.         end
217.     end
218.     if not downCheck then
219.         dig("down")
220.     end
221. end
222.
223. function mineLayer()
224.     miningDirection = true
225.     for i=1, userx do
226.         if miningDirection == true then
227.             turn(0)
228.             while z < userz do
229.                 dig()
230.                 forward()
231.                 check()
232.             end
233.             if x < userx then
234.                 turn(1)
235.                 dig()
236.                 forward()
237.                 check()
238.             end
239.             miningDirection = false
240.         else
241.
242.             turn(2)
243.             while z > 1 do
244.                 dig()
245.                 forward()
246.                 check()
247.             end
248.             if x < userx then
249.                 turn(1)
250.                 dig()
251.                 forward()
252.                 check()
253.             end
254.             miningDirection = true
255.         end
256.     end
257. end
258.
259. print(bedrock + (maxLayer) * 3)
260. print(maxLayer)
261.
262. -- main loop (i=0, maxLayer)
263. for i=0, maxLayer do
264.     gotoLayer(bedrock + (maxLayer - i) * 3)
265.     print("mining at Y:", y)
266.     mineLayer()
267.     home()
268. end
269. print("program completed successfully")
270. home(true)
RAW Paste Data