-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsugarcane.lua
137 lines (91 loc) · 1.93 KB
/
sugarcane.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
length = 10
width = 10
collected = 0
turnRight = true
function collectForward ()
if turtle.detect() then
turtle.dig()
collected = collected + 1
end
turtle.forward()
if turtle.detectDown() then
turtle.digDown()
collected = collected + 1
end
end
function forwardColumn ()
-- 2 here, because we've done one on column shift already
for i = 2, length do
collectForward()
end
end
function nextColumn ()
if turnRight then
turtle.turnRight()
collectForward()
turtle.turnRight()
else
turtle.turnLeft()
collectForward()
turtle.turnLeft()
end
turnRight = not turnRight
end
function doGrid ()
-- the turtle must facing the first column, far left of the farm
collectForward()
for i = 1, width do
forwardColumn()
if i < width then
nextColumn()
end
end
-- return to origin
turtle.forward()
turtle.turnRight()
for i = 1, width - 1 do
turtle.forward()
end
turtle.turnRight()
end
function ensureFuel ()
necessaryFuel = (width * length) + width
print("current fuel level: "..turtle.getFuelLevel())
print("necessary fuel level: "..necessaryFuel)
turtle.turnLeft()
-- keep trying to suck things out of the fuel chest until we have enough
while turtle.getFuelLevel() < necessaryFuel do
print("waiting for fuel...")
turtle.suck()
turtle.refuel()
sleep(15)
end
print("refueled")
turtle.turnRight()
end
function unload ()
for i=1,15 do
turtle.select(i)
turtle.dropDown()
end
end
function cycle ()
-- assumes:
-- the drop off chest is below
-- the refuel chest is to the left
-- turtle starts at back left corner of farm
-- 16 is the fuel slot
-- 1 is the sugar cane slot
while true do
turtle.select(16)
ensureFuel()
turnRight = true
turtle.select(1)
doGrid()
print("collected "..collected)
collected = 0
unload()
sleep(10)
end
end
cycle()