# TableSidePoop

Oct 26th, 2021 (edited)
611
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. --getting started and resetting some shit
2. term.clear()
3. turtle.select(1)
4. --declaring globals maybe!?
5.
6. --Initialise functions
7.
8. function turtRefuel(amount) --function to refuel
9.     turtle.select(16)
10.     if turtle.refuel(0) == true then
11.         if amount < 64 then
12.             turtle.refuel(amount)
13.         else
14.             turtle.refuel(64)
15.         end
16.     else
17.         print("This item cannot be used to refuel!\n")
18.     end
19. end
20.
21. function yesNo() --function to get user to answer yes/no
22.     tmp = ""
23.     term.write("Are you ready? (y/n): ")
25.     while true do
26.         if (string.lower(tmp) == "y") or (string.lower(tmp) == "yes") then
27.             term.clear()
28.             break
29.         elseif (string.lower(tmp) == "n") or (string.lower(tmp) == "no") then
30.             print("\nOkay, byebye...\n")
31.             os.sleep(1)
32.             print(".")
33.             os.sleep(1)
34.             term.write(".")
35.             os.sleep(1)
36.             term.write(".")
37.             os.reboot()
38.         else
39.             print("\nI didn't understand that\n")
40.             term.write("Are you ready? (y/n): ")
42.         end
43.         end
44. end
45.
46. function nth(n) --Nth triangle shit cus math library sucks ass
47.     if (n == 0) then
48.         return 1
49.     else
50.         return ((n * (n + 1)) / 2)
51.     end
52. end
53.
54. function initCheckBuckets() -- to check if there are 15 buckets to start and disperse them equally
55.     trip = 0
56.     for i=1,15 do
57.         nameItem = turtle.getItemDetail(i)
58.         if nameItem ~= nil then
59.             if (nameItem["name"] == "minecraft:bucket") and (nameItem["count"] == 1) then
60.                 trip = trip + 1
61.             end
62.         end
63.     end
64.     if trip == 15 then
65.         --continue out of this function
66.     else
67.         nameItem = turtle.getItemDetail(1)
68.         if (nameItem["name"] == "minecraft:bucket") and (nameItem["count"] ~= 15) then --determines if there's the right amount of buckets in the first slot
69.             print("Buckets are present in slot 1 but not 15!!!\n\nTurtle will now restart, fix ur shit")
70.             yesNo()
71.             os.reboot()
72.         else
73.             for i=2,15 do
74.                 nameItem = turtle.getItemDetail(i)
75.                 if nameItem ~= nil then
76.                     print("Something is obstructing the buckets to be equally dispearsed!!!\n\nTurtle will now restart, fix ur shit")
77.                     yesNo()
78.                     os.reboot()
79.                 end
80.             end
81.             nameItem = turtle.getItemDetail(1)
82.             bucketCount = nameItem["count"]
83.             if (bucketCount == 15) then -- for loop that equally spreads out the 15 buckets excluding the last slot reserved for fuel
84.                 turtle.select(1)
85.                 for i=2,bucketCount do
86.                     turtle.transferTo(i, 1)
87.                 end
88.             end
89.         end
90.     end
91. end
92. function refillPoop()
93.     print("NEED MORE SHIT\n")
94.     for i=1, 15 do
95.         turtle.select(i)
96.         nameItem = {}
97.         nameItem = turtle.getItemDetail()
98.         if (nameItem ~= nil) then
99.             if nameItem["name"] == "minecraft:bucket" then
100.                 turtle.drop()
101.                 turtle.suck()
102.             end
103.         else
104.             print("Slot is empty\n")
105.         end
106.     end
107. end
108.
109. function rePoop(xPaced, zPaced, yPaced, direction)
110.     print("Returning for more shite :)\n")
111.     if yPaced == 0 then --if its on the top layer
112.         if direction == 1 then -- if its travelling/facing away
113.             if zPaced == 0 then -- if turtle on the same Z axis as home point
114.                 turtle.turnLeft()
115.                 turtle.turnLeft()
116.                 for i=1,xPaced do
117.                     turtle.forward()
118.                 end
119.                 refillPoop()
120.                 turtle.turnLeft()
121.                 turtle.turnLeft()
122.                 for i=1,xPaced do
123.                     turtle.forward()
124.                 end
125.                 return
126.             else -- if turtle is away from home points Z axis
127.                 turtle.turnLeft()
128.                 for i=1,zPaced do
129.                     turtle.forward()
130.                 end
131.                 turtle.turnLeft()
132.                 for i=1,xPaced do
133.                     turtle.forward()
134.                 end
135.                 refillPoop()
136.                 turtle.turnLeft()
137.                 turtle.turnLeft()
138.                 for i=1,xPaced do
139.                     turtle.forward()
140.                 end
141.                 turtle.turnRight()
142.                 for i=1,zPaced do
143.                     turtle.forward()
144.                 end
145.                 turtle.turnLeft()
146.                 return
147.             end
148.         else -- if its travelling/facing towards homepoint
149.             if xPaced == 0 then -- if turtle on the same X axis as home point
150.                 turtle.turnRight()
151.                 for i=1,zPaced do
152.                     turtle.forward()
153.                 end
154.                 turtle.turnLeft()
155.                 refillPoop()
156.                 turtle.turnLeft()
157.                 turtle.turnLeft()
158.                 for i=1,zPaced do
159.                     turtle.forward()
160.                 end
161.                 turtle.turnRight()
162.                 return
163.             else -- if turtle is away from home points X axis
164.                 turtle.turnRight()
165.                 for i=1,zPaced do
166.                     turtle.forward()
167.                 end
168.                 turtle.turnLeft()
169.                 for i=1,xPaced do
170.                     turtle.forward()
171.                 end
172.                 refillPoop()
173.                 turtle.turnLeft()
174.                 turtle.turnLeft()
175.                 for i=1,xPaced do
176.                     turtle.forward()
177.                 end
178.                 turtle.turnRight()
179.                 for i=1,zPaced do
180.                     turtle.forward()
181.                 end
182.                 turtle.turnRight()
183.                 return
184.             end
185.         end
186.     else --if its below the top layer
187.         if direction == 1 then -- if its travelling/facing away
188.             if zPaced == 0 then -- if turtle on the same Z axis as home point
189.                 for i=1,yPaced do
190.                     turtle.up()
191.                 end
192.                 turtle.turnLeft()
193.                 turtle.turnLeft()
194.                 for i=1,xPaced do
195.                     turtle.forward()
196.                 end
197.                 refillPoop()
198.                 turtle.turnLeft()
199.                 turtle.turnLeft()
200.                 for i=1,xPaced do
201.                     turtle.forward()
202.                 end
203.                 for i=1,yPaced do
204.                     turtle.down()
205.                 end
206.                 return
207.             else -- if turtle is away from home points Z axis
208.                 for i=1,yPaced do
209.                     turtle.up()
210.                 end
211.                 turtle.turnLeft()
212.                 for i=1,zPaced do
213.                     turtle.forward()
214.                 end
215.                 turtle.turnLeft()
216.                 for i=1,xPaced do
217.                     turtle.forward()
218.                 end
219.                 refillPoop()
220.                 turtle.turnLeft()
221.                 turtle.turnLeft()
222.                 for i=1,xPaced do
223.                     turtle.forward()
224.                 end
225.                 turtle.turnRight()
226.                 for i=1,zPaced do
227.                     turtle.forward()
228.                 end
229.                 turtle.turnLeft()
230.                 for i=1,yPaced do
231.                     turtle.down()
232.                 end
233.                 return
234.             end
235.         else -- if its travelling/facing towards homepoint
236.             if xPaced == 0 then -- if turtle on the same X axis as home point
237.                 for i=1,yPaced do
238.                     turtle.up()
239.                 end
240.                 turtle.turnRight()
241.                 for i=1,zPaced do
242.                     turtle.forward()
243.                 end
244.                 turtle.turnLeft()
245.                 refillPoop()
246.                 turtle.turnLeft()
247.                 for i=1,zPaced do
248.                     turtle.forward()
249.                 end
250.                 turtle.turnRight()
251.                 for i=1,yPaced do
252.                     turtle.down()
253.                 end
254.                 return
255.             else -- if turtle is away from home points X axis
256.                 for i=1,yPaced do
257.                     turtle.up()
258.                 end
259.                 turtle.turnRight()
260.                 for i=1,zPaced do
261.                     turtle.forward()
262.                 end
263.                 turtle.turnLeft()
264.                 for i=1,xPaced do
265.                     turtle.forward()
266.                 end
267.                 refillPoop()
268.                 turtle.turnLeft()
269.                 turtle.turnLeft()
270.                 for i=1,xPaced do
271.                     turtle.forward()
272.                 end
273.                 turtle.turnRight()
274.                 for i=1,zPaced do
275.                     turtle.forward()
276.                 end
277.                 turtle.turnRight()
278.                 for i=1,yPaced do
279.                     turtle.down()
280.                 end
281.                 return
282.             end
283.         end
284.     end
285. end
286.
287. function poopin()
288.     if turtle.detectDown() == false then
289.         turtle.placeDown()
290.         return true
291.     end
292.         return false
293. end
294.
295.
296. --  ################################
297. --  ########### STARTING ###########
298. --  ################################
299. term.setCursorPos(1, 1)
300. print("============ TableSidePoop ============\n")
301. print("This program will fill a hole with \ncomplete shite... literally\n\n")
302. os.sleep(3)
303.
304. --disclaimer/EULA type beat
305. print("Please insert 15 empty buckets into slot 1 :)")
306. yesNo()
307. term.clear()
308. term.setCursorPos(1, 1)
309. initCheckBuckets()
310. print("The dumpy turtle will need to be facing the direction of the hole to fill and placed above the hole not on the block on the walls of the hole\n")
311. os.sleep(2)
312. print("A tank of some sort should be placed to its back and a chest to dump excess shit\n")
313. os.sleep(2)
314. print("The dumpy turtle should also be on the left corner of the hole to fill")
315. os.sleep(2)
316. yesNo()
317.
318. --getting dims
319. term.setCursorPos(1,1)
320. print("What dimensions would you like to fill?\n")
321.
322. os.sleep(1)
323. term.write("Length: ")
324. x = math.floor(math.abs(tonumber(io.read()) or x))
325. term.write("Width: ")
326. z = math.floor(math.abs(tonumber(io.read()) or z))
327. term.write("Depth: ")
328. y = math.floor(math.abs(tonumber(io.read()) or y))
329.
330. --print(x,z,y)
331.
332. os.sleep(1)
333. --get fuel needed for complete operation
334. area = (x * z) * y --get area
335. maxBack = (x + z) * y --get max perimeter and times needed to get back
336.
337. fuelNeeded = area + maxBack + nth(y) --adds all together and nth triangle shit of y cus it will need to go up multiple times init remember why this is right you shithead
338.
339. -- add a EULA/NOTICE type beat for how many buckets of liquid will be needed
340. term.clear()
341. term.setCursorPos(1,1)
342. print(string.format("The amount of liquid needed to complete this job is going to be: %d buckets\n", area))
343. os.sleep(1)
344. print("make sure to have enough before continuing...")
345. os.sleep(1)
346. yesNo()
347.
348. term.clear()
349. term.setCursorPos(1,1)
350. print("\namount of fuel needed to complete \nthis order of shite:", fuelNeeded)
351. os.sleep(3)
352. --check if already enough fuel
353. tmp= fuelNeeded
354. fuelLevel = turtle.getFuelLevel()
355. if fuelLevel > tmp then
356.     print("\nThere's already enough fuel to get to shittin'\n\n")
357. else
358.     --start refuelling
359.     turtle.select(16)
360.     term.clear()
361.     term.setCursorPos(1, 1)
362.     print("Starting Refueling process...\n")
363.     i=0
364.     while fuelLevel <= tmp do
365.         i = i + 1
366.         if tmp < 64 then
367.             turtRefuel(tmp)
368.         else
369.             turtRefuel(tmp)
370.             tmp = tmp - 64
371.         end
372.         fuelLevel = turtle.getFuelLevel()
373.         term.clear()
374.         term.setCursorPos(1, 1)
375.         print("Starting Refueling process...\n")
376.         print(string.format("Fuel still needed!"))
377.         if i == 1 then
378.             print(".")
379.         else if i == 2 then
380.             print("..")
381.         else if i == 3 then
382.             print("...")
383.             i = 0
384.         end
385.         end
386.         end
387.     end
388.     term.clear()
389.     term.setCursorPos(1, 1)
390.     print("Refueling Complete, dumping access fuel if any...\n")
391.     -- drop remainging fuel if any is present in inv (IN FUTURE MAKE THIS DUMP INTO AN INV OR SMTH)
392.         turtle.select(16)
393.         if turtle.refuel(0) == true then
394.             turtle.turnLeft()
395.             turtle.drop(64)
396.             turtle.turnRight()
397.         end
398.     turtle.select(1)
399. end
400.
401. --fill the first wave of buckets
402. turtle.turnLeft()
403. turtle.turnLeft()
404. for i=1, 15 do
405.     turtle.select(i)
406.     itemNamed = {}
407.     itemNamed = turtle.getItemDetail()
408.     if (itemNamed ~= nil) then
409.         if itemNamed["name"] == "minecraft:bucket" then
410.             turtle.drop()
411.             turtle.suck()
412.         end
413.     else
414.         print("Slot is empty\n")
415.     end
416. end
417. turtle.select(1)
418. turtle.turnLeft()
419. turtle.turnLeft()
420.
421. --movement phases debug
422. term.clear()
423. term.setCursorPos(1, 1)
424. print("Starting movement phase!!!\n")
425. tmpY = y-1
426. placed = 1
427. for i3=1,y do -- go to lowest layer first then up more layer first
428.     xPaced = 0 --amount of blocks moved to use to return etc
429.     zPaced = 0
430.     yPaced = 0
431.     tmpSlot = 1
432.     if y > 1 then
433.         for i4=1,tmpY do
434.             turtle.down()
435.             yPaced = yPaced + 1
436.             print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
437.         end
438.     end
439.     for i=1,z do --Iterate over the width
440.         if placed == 16 then -- this sees the last block has been placed so trigger the rePoop function to refill the buckets and return to the same spot to continue
441.             rePoop(xPaced, zPaced, yPaced, math.fmod(i, 2))
442.             placed = 1
443.             turtle.select(placed)
444.             poopin()
445.             placed = placed + 1
446.         else -- this places the block then iterates placed by one to move the slot along
447.             turtle.select(placed)
448.             poopin()
449.             placed = placed + 1
450.         end
451.         for i2=1,x-1 do --Iterate over the length
452.             turtle.forward()
453.             --place place function here
454.             if placed == 16 then -- this sees the last block has been placed so trigger the rePoop function to refill the buckets and return to the same spot to continue
455.                 if math.fmod(i, 2) == 1 then --Decided whether travelling forwards or backwards
456.                     xPaced = xPaced + 1
457.                     print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
458.                 else
459.                     xPaced = xPaced - 1
460.                     print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
461.                 end
462.                 rePoop(xPaced, zPaced, yPaced, math.fmod(i, 2))
463.                 placed = 1
464.                 turtle.select(placed)
465.                 poopin()
466.                 placed = placed + 1
467.             else -- this places the block then iterates placed by one to move the slot along
468.                 turtle.select(placed)
469.                 poopin()
470.                 placed = placed + 1
471.                 if math.fmod(i, 2) == 1 then --Decided whether travelling forwards or backwards
472.                     xPaced = xPaced + 1
473.                     print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
474.                 else
475.                     xPaced = xPaced - 1
476.                     print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
477.                 end
478.             end
479.         end
480.         if math.fmod(i, 2) == 1 then --Decided whether to turn left or right
481.             if i ~= z then
482.                 turtle.turnRight()
483.                 turtle.forward()
484.                 turtle.turnRight()
485.                 zPaced = zPaced + 1
486.                 print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
487.             end
488.         else
489.             if i ~= z then
490.                 turtle.turnLeft()
491.                 turtle.forward()
492.                 turtle.turnLeft()
493.                 zPaced = zPaced + 1
494.                 print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
495.             end
496.         end
497.     end
499.     if math.fmod(z, 2) == 1 then --if the turtle finished the y axis away from the starting point
500.         turtle.turnLeft()
501.         for p=1,z-1 do
502.             turtle.forward()
503.             zPaced = zPaced - 1
504.             print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
505.         end
506.         turtle.turnLeft()
507.         for p=1,x-1 do
508.             turtle.forward()
509.             xPaced = xPaced - 1
510.             print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
511.         end
512.         turtle.turnLeft()
513.         turtle.turnLeft()
514.     else --if the turtle finished the y axis on line with the starting point
515.         turtle.turnRight()
516.         for p=1,z-1 do
517.             turtle.forward()
518.             zPaced = zPaced - 1
519.             print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
520.         end
521.         turtle.turnRight()
522.     end
523.     --raises it back to home point layer
524.     if y > 1 then
525.         for i4=1,tmpY do
526.             turtle.up()
527.             yPaced = yPaced - 1
528.             print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
529.         end
530.     end
531.     print(string.format("[%d,%d,%d] %d\n",xPaced,zPaced,yPaced,placed))
532.     --remove 1 from y access
533.     tmpY = tmpY-1
534. end
535.
536. --dumping left over inv
537. term.clear()
538. term.setCursorPos(1,1)
539. i=0
540. turtle.turnLeft()
541. for finish_it=1,16 do
542.     turtle.select(finish_it)
543.     turtle.drop(64)
544.
545.     i=i+1
546.     term.clear()
547.     term.setCursorPos(1, 1)
548.     print("Cleaning up...\nDumping excess shit into chest!")
549.     if i == 1 then
550.         print(".")
551.     else if i == 2 then
552.         print("..")
553.     else if i == 3 then
554.         print("...")
555.         i = 0
556.     end
557.     end
558.     end
559. end
560. turtle.turnRight()
561. os.sleep(1)
562.
563. term.clear()
564. term.setCursorPos(1,1)
565. print("\n\n\n\n\n=======================================\n========== FINISHED SHITTIN' ==========\n=======================================\n\n\n\n")
RAW Paste Data