View difference between Paste ID: 26dLD5MC and d79d2UX7
SHOW: | | - or go back to the newest paste.
1
local args = {...}
2
 
3
if #args ~= 3 then
4
  print("Usage: quarry <row length> <number of rows> <current y>")
5
  error()
6
end
7
 
8
rowLength = args[1]
9
rows = args[2]
10
startingY = args[3]
11
curRow = 1
12
 
13
y = startingY
14
 
15
function full()
16
  fullSlots = 0
17
  for i=2,15 do
18
    if turtle.getItemCount(i) > 0 then
19
      fullSlots = fullSlots + 1
20
    end
21
  end
22
  print(fullSlots .. " slots are full")
23
  return(fullSlots == 14)
24
end
25
 
26
function checkFuel()
27
  if turtle.getFuelLevel() < 10 then
28
    turtle.select(1)
29
    turtle.refuel(1)
30
    end
31
end
32
 
33
function digMove()
34
  checkFuel()
35
  while turtle.detect() do
36
    turtle.dig()
37
    os.sleep(0.5)
38
  end
39
  turtle.forward()
40
  turtle.digUp()
41
  turtle.digDown()
42
end
43
 
44
function turn()
45
  if curRow % 2 == 0 then
46
    turtle.turnRight()
47
  else
48
    turtle.turnLeft()
49
  end
50
end
51
 
52
function dig()
53
  turtle.digDown()
54
  turtle.down()
55
  y = y - 1
56
end
57
 
58
function back()
59
  turtle.turnLeft()
60
  for i=1,rows do
61
    checkFuel()
62
    turtle.forward()
63
  end
64
  turtle.turnLeft()
65
end
66
 
67
function up()
68
  for i=1,(startingY - y) do
69
    checkFuel()
70
    turtle.up()
71
    y = y + 1
72
  end
73
end
74
 
75
 
76
function down(x)
77
  for i=1,x do
78
    checkFuel()
79
    dig(x)
80
  end
81
end
82
 
83
function chest()
84
  turtle.turnLeft()
85
  turtle.turnLeft()
86
  for i=2,16 do
87
    turtle.select(i)
88
    turtle.drop()
89
  end
90
  if turtle.getItemCount(1) < 3 then
91
    turtle.up()
92
    turtle.select(1)
93
    turtle.suck()
94
    turtle.down()
95
  end
96
  turtle.turnRight()
97
  turtle.turnRight()
98
end
99
 
100
function level()
101
  curRow = 1
102
  for i=1,rows do
103
    for i=1,rowLength-1 do
104
      digMove()
105
    end
106
    if curRow == tonumber(rows) then
107
     
108
    else
109
      turn()
110
      digMove()
111
      turn()
112
      curRow = curRow + 1
113
    end
114
  end
115
  back()
116
  tempY = y
117
  if full() then
118
    up()
119
    chest()
120
    down(startingY - tempY + 3)
121
  else
122
    down(3)
123
  end
124
  turtle.digDown()
125
end
126
 
127
function quarry()
128
  down(2)
129
  turtle.digDown()
130
  while y > 5 do
131
    level()
132
  end
133
  up()
134
end
135
 
136
quarry()