SHOW:
|
|
- or go back to the newest paste.
1 | - | -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
1 | + | |
2 | - | -- Name: DanielKermanStripMining (DKSM) -- |
2 | + | |
3 | - | -- Author: Daniel_Kerman -- |
3 | + | |
4 | - | -- Version: 1.0.1 -- |
4 | + | |
5 | - | -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
5 | + | |
6 | local hallLength = {0} | |
7 | local fuelNeeded = {0} | |
8 | local fuelLevel = turtle.getFuelLevel() | |
9 | local fuelLimit = turtle.getFuelLimit() | |
10 | local startConfirmed = "No" | |
11 | local slot = turtle.getSelectedSlot() | |
12 | local itemSpace = turtle.getItemSpace() | |
13 | local torchCounter = 0 | |
14 | ||
15 | -- Declaring Functions -- | |
16 | ||
17 | function forward() -- Help from the user Foogles (http://www.computercraft.info/forums2/index.php?/user/46239-foogles/) -- THANK YOU FOR THIS BUG SOLUTION! | |
18 | local x = turtle.forward() | |
19 | if (x == false) then | |
20 | return forward() | |
21 | end | |
22 | end | |
23 | ||
24 | local function clear(column,row) | |
25 | term.clear() | |
26 | if column == nil and row == nil then | |
27 | column = 1 | |
28 | row = 1 | |
29 | elseif row == nil then | |
30 | row = 1 | |
31 | elseif column == nil then | |
32 | column = 1 | |
33 | end | |
34 | term.setCursorPos(column,row) | |
35 | end | |
36 | ||
37 | local function checkNumber(varToCheck) | |
38 | assert(type(varToCheck) == "number", "Program expected number. Got string or something else instead.") | |
39 | end | |
40 | ||
41 | local function fallingBlock() | |
42 | local success, data = turtle.inspect() | |
43 | local fBlocks = | |
44 | { | |
45 | sand="minecraft:sand", | |
46 | gravel="minecraft:gravel", | |
47 | anvil="minecraft:anvil", | |
48 | dragon_egg="minecraft:dragon_egg" | |
49 | } | |
50 | if data.name==fBlocks.sand or data.name==fBlocks.gravel or data.name==fBlocks.anvil or data.name==fBlocks.dragon_egg then | |
51 | return true | |
52 | else | |
53 | return false | |
54 | end | |
55 | end | |
56 | ||
57 | local function dig(length,back) | |
58 | for i=1, length do | |
59 | torchCounter=torchCounter+1 | |
60 | while fallingBlock() == true do | |
61 | turtle.dig() | |
62 | sleep(1) | |
63 | end | |
64 | turtle.dig() | |
65 | forward() | |
66 | turtle.digDown() | |
67 | if torchCounter >= 8 then | |
68 | turtle.select(16) | |
69 | if turtle.getItemSpace() < 64 then | |
70 | local data = turtle.getItemDetail() | |
71 | if data.name == "minecraft:torch" then | |
72 | turtle.placeDown() | |
73 | end | |
74 | end | |
75 | torchCounter = 0 | |
76 | turtle.select(1) | |
77 | end | |
78 | end | |
79 | if back == true then | |
80 | turtle.turnLeft() | |
81 | turtle.turnLeft() | |
82 | for i=2, length do | |
83 | forward() | |
84 | end | |
85 | forward() | |
86 | turtle.turnLeft() | |
87 | turtle.turnLeft() | |
88 | end | |
89 | ||
90 | end | |
91 | ||
92 | -- Welcome + User input -- | |
93 | ||
94 | clear(1,1) | |
95 | ||
96 | print("Welcome to the Strip Mining Program.") | |
97 | sleep(1) | |
98 | print("Please enter a Hall/Strip Length (x = x block/s): ") | |
99 | hallLength[1] = io.read() | |
100 | hallLength[1] = tonumber(hallLength[1]) | |
101 | checkNumber(hallLength[1]) | |
102 | print("Please enter a number of rows:") | |
103 | totalRows[1] = io.read() | |
104 | totalRows[1] = tonumber(totalRows[1]) | |
105 | checkNumber(totalRows[1]) | |
106 | print("Calculating if turtle has enough fuel...") | |
107 | fuelNeeded[1] = (hallLength[1]*3*totalRows[1])+(12*totalRows[1]) | |
108 | sleep(1.0) | |
109 | assert(fuelNeeded[1]<fuelLimit, "Your fuel Limit is too low. Try an advanced turtle.") | |
110 | assert(fuelNeeded[1]<fuelLevel, "Your turtle hasn't enought fuel.") | |
111 | print("Your turtle has enough fuel. Please place a chest behind the turtle.") | |
112 | sleep(2.0) | |
113 | clear(1,1) | |
114 | print("Place a chest behind the turtle.") | |
115 | print("Place Torches to place in Slot 16 (Bottom right hand corner)") | |
116 | write("Press any key to start the program.") | |
117 | local skip = io.read() | |
118 | ||
119 | -- Post initialization -- | |
120 | ||
121 | local rowsToMine = totalRows[1]-rowsMined[1] | |
122 | clear(1,1) | |
123 | turtle.select(1) | |
124 | ||
125 | -- Main Loop -- | |
126 | ||
127 | for i=1, totalRows[1] do | |
128 | turtle.select(1) | |
129 | dig(3,false) | |
130 | turtle.turnLeft() | |
131 | dig(hallLength[1],true) | |
132 | rowsMined[1] = rowsMined[1]+1 | |
133 | clear(1,1) | |
134 | print("Rows Mined: ",rowsMined[1]) | |
135 | local z = 1 | |
136 | turtle.select(15) | |
137 | if turtle.getItemSpace() < 64 then | |
138 | turtle.turnLeft() | |
139 | for i=1,rowsMined[1]*3+1 do | |
140 | forward() | |
141 | end | |
142 | for i=1,15 do | |
143 | turtle.select(z) | |
144 | z=z+1 | |
145 | turtle.drop(64) | |
146 | end | |
147 | turtle.turnRight() | |
148 | turtle.turnRight() | |
149 | for i=1,rowsMined[1]*3+1 do | |
150 | forward() | |
151 | end | |
152 | turtle.turnLeft() | |
153 | end | |
154 | turtle.turnRight() | |
155 | rowsToMine = totalRows[1]-rowsMined[1] | |
156 | end | |
157 | ||
158 | -- Ending -- | |
159 | ||
160 | do | |
161 | print("Putting Items into chest.") | |
162 | turtle.turnLeft() | |
163 | turtle.turnLeft() | |
164 | for i=1, (rowsMined[1]*3)+1 do | |
165 | forward() | |
166 | end | |
167 | z=1 | |
168 | for i=1,16 do | |
169 | turtle.select(z) | |
170 | z=z+1 | |
171 | turtle.drop(64) | |
172 | end | |
173 | end | |
174 | ||
175 | turtle.select(1) | |
176 | ||
177 | print("Mining Complete.") | |
178 | ||
179 | sleep(2) | |
180 | ||
181 | clear(1,1) |