View difference between Paste ID: Y0xpL26s and LAVMf7uQ
SHOW: | | - or go back to the newest paste.
1
DumpChestSlot = 1
2
FuelChestSlot = 2
3
GravityWait = 0.5
4
ItemChestSlot = 3
5
ItemSlot = 4
6
SpaceBegin = 5
7
SpaceEnd = 16
8
9
Args = {...}
10
L, W, H = tonumber(Args[1]), tonumber(Args[2]), tonumber(Args[3])
11-
l, w, h
11+
12
function build()
13
	if turtle.getItemCount(ItemSlot) == 0 then
14
		turtle.select(ItemChestSlot)
15
		turtle.placeDown()
16
		turtle.select(ItemSlot)
17
		turtle.suckDown()
18
		turtle.select(ItemChestSlot)
19
		turtle.digDown()
20
	end
21
	if needSpace() then
22
		turtle.select(DumpChestSlot)
23
		turtle.placeDown()
24
		for slot = SpaceBegin, SpaceEnd do
25
			turtle.select(slot)
26
			turtle.dropDown()
27
		end
28
		turtle.select(DumpChestSlot)
29
		turtle.digDown()
30
	end
31
	turtle.select(ItemSlot)
32
	return turtle.placeDown()
33
end
34
35
function move()
36
	turtle.select(SpaceBegin)
37
	while turtle.dig() do
38
		os.sleep(GravityWait)
39
	end
40
	if needFuel() then
41
		turtle.select(FuelChestSlot)
42
		turtle.place()
43
		turtle.suck()
44
		turtle.refuel()
45
		turtle.dig()
46
	end
47
	return turtle.forward()
48
end
49
50
function moveUp()
51
	turtle.select(SpaceBegin)
52
	while turtle.digUp() do
53
		os.sleep(GravityWait)
54
	end
55
	if needFuel() then
56
		turtle.select(FuelChestSlot)
57
		turtle.placeUp()
58
		turtle.suckUp()
59
		turtle.refuel()
60
		turtle.digUp()
61
	end
62
	return turtle.up()
63
end
64
65
function needFuel()
66
	if (turtle.getFuelLimit() == "unlimited") or (turtle.getFuelLevel() > 0) then
67-
	if turtle.getFuelLimit() == "unlimited" or turtle.getFuelLevel() > 0 then
67+
68
	end
69
	return true
70
end
71
72
function needSpace()
73
	for slot = SpaceBegin, SpaceEnd do
74
		if turtle.getItemCount(slot) == 0 then
75
			return false
76
		end
77
	end
78
	return true
79
end
80
81
function surface()
82
	return (l == 1 or l == L or w == 1 or l == L or h == 1 or h == H)
83
end
84
85
for h = 1, H do
86
	moveUp()
87-
	up()
87+
88
		for l = 1, L do
89
			if surface() then
90
				build()
91
			end
92
			move()
93-
			forward()
93+
94
		local turn
95
		if (w % 2) == 0 then
96
			turn = turtle.turnRight
97
		else
98
			turn = turtle.turnLeft
99
		end
100
		turn()
101
		move()
102-
		forward()
102+
103
	end
104
	if (w % 2) == 1 then
105
		turtle.turnRight()
106
		turtle.turnRight()
107
		for l = 1, L do
108
			move()
109-
			forward()
109+
110
	end
111
	turtle.turnRight()
112
	for w = 1, W do
113
		move()
114-
		forward()
114+
115
	turtle.turnRight()
116
end