View difference between Paste ID: PjV6i4tU and ikp7jQZK
SHOW: | | - or go back to the newest paste.
1
function CleanClear()
2
  term.clear()
3
  term.setCursorPos(1, 1)
4
end
5
6
currentLevel = 0
7
function Quarry(xDistance, zDistance, Depth, returnFrequency, amntOfTorches)
8
	
9
	for currentLevel = 1, Depth do
10
		turtle.digDown()
11
		turtle.down()
12
		
13
		if currentLevel >= turtle.getFuelLevel() then --If runs out of fuel
14
			local oldLevel = currentLevel
15
			for clvl = currentLevel, 0 do
16
			turtle.digUp()
17
			turtle.up()
18
			end
19
			currentLevel = 0
20
			
21
			CleanClear()
22
			currentLevel = 0
23
			print("Returned To Surface\n")
24
			print("Reason:\nRan out of fuel.\n")
25
			print("Refuel?")
26
			print("Enter Y for yes or anything else to end the Quarry.")
27
			fuelConfQuarry = read()
28
			
29
			if fuelConfQuarry == "Y" then
30
				CleanClear()
31
				print("Enter the amount of items of fuel you want to load in or enter \'all\' to load QuarryBot with all the fuel within its inventory. If you don't use \'all\' then it will only take fuel from the top-left slot.\n")
32
				local fuelParamEnter = read()
33-
      if fuelParamEnter == "all" then    
33+
			
34-
        for i = 1, 16 do
34+
				if fuelParamEnter == "all" then    
35
					Fuel(true, 0)
36
				else
37
					Fuel(false, fuelParamEnter)
38
				end
39
				
40
				print("Refuelled!\n")
41-
      else
41+
				print("There is now "..turtle.getFuelLevel().." fuel inside of QuarryBot.")
42
				sleep(2)
43
				CleanClear()
44-
          turtle.refuel(tonumber(fuelParamEnter)) 
44+
				textutils.slowPrint("Continuing Quarry...")
45
				
46-
      end
46+
				for nclvl = currentLevel, oldLevel do
47-
      print("Refueled!\n")
47+
					turtle.digDown()
48
					turtle.down()
49-
   end  
49+
				end
50
				currentLevel = oldLevel
51
				
52
			else
53
			CleanClear()
54
			print("Thank you for using QuarryBot!")
55
			sleep(1)
56
			os.shutdown()
57
			end
58
		end
59
		
60
		local success, data = turtle.inspectDown()
61
		if success then --If detects bedrock below
62
			if data.name == "minecraft:bedrock" then
63
				for bclvl = currentLevel, 0 do
64
					turtle.digUp()
65
					turtle.up()
66
				end
67
				currentLevel = 0
68
				break
69
			end
70
		end
71
	
72
		if currentLevel == Depth then
73
			print("Depth Called!")
74
			for dclvl = currentLevel, 0 do
75
				turtle.digUp()
76
				turtle.up()
77
			end
78
		end
79
	
80
		print ("cL: "..currentLevel.." D: "..Depth)
81
	end
82
	currentLevel = 0
83
	
84
end
85
86
function Fuel(all, amount)
87
  if all == true then
88
89
	for i = 1, 16 do
90
          turtle.select(i)
91
          if turtle.refuel(0) then
92
            turtle.refuel(turtle.getItemCount(i))
93
          end
94
        end
95
        turtle.select(1)
96
97
  else
98
99
	turtle.select(1)
100
        if(turtle.refuel(0)) then
101
          turtle.refuel(tonumber(amount)) 
102
        end
103
104
  end
105
end
106
107
function Confirm(xD, zD, dep, retFq)
108
  CleanClear()
109
  textutils.slowPrint("So...")
110
  sleep(2)
111
  CleanClear()
112
  textutils.slowPrint("Quarry Parameter Preview\n")
113
  print("Quarry X: "..xD)
114
  print("Quarry Z: "..zD)
115
  print("Quarry depth: "..dep)
116
  print("Quarry return frequency: "..retFq.."\n")
117
  sleep(2)
118
  print("Is this correct?")
119
  textutils.slowPrint("Y for yes or anything else for no...")
120
  confirmEnter = read()
121
 
122
   if confirmEnter ~= "Y" then
123
    CleanClear()
124
    print("Okay... Restarting program.")
125
    sleep(1)
126
    Start()
127
  else
128
    CleanClear()
129
    textutils.slowPrint("Quarry Fuel Preview\n")
130
    local amOfFuelIn = turtle.getFuelLevel()
131
    if amOfFuelIn <= 0 then
132
      print("It seems that there is no fuel left in QuarryBot. In order to continue, enter the amount of items of fuel you want to load in or enter \'all\' to load QuarryBot with all the fuel within its inventory. If you don't use \'all\' then it will only take fuel from the top-left slot.\n")
133
      local fuelParamEnter = read()
134
135
     	 if fuelParamEnter == "all" then    
136
		Fuel(true, 0)
137
    	  else
138
		Fuel(false, fuelParamEnter)
139
    	  end
140
141
      print("Refuelled!\n")
142
      print("There is now "..turtle.getFuelLevel().." fuel inside of QuarryBot.")
143
	  sleep(2)
144
    else
145
	print("Would you like to refuel? Enter Y for yes or anything else for no...")
146
	local fuelConfCheck = read()
147
148
	if fuelConfCheck == "Y" then
149
	print("In order to continue, enter the amount of items of fuel you want to load in or enter \'all\' to load QuarryBot with all the fuel within its inventory. If you don't use \'all\' then it will only take fuel from the top-left slot.\n")
150
	
151
	  local fuelParamEnter = read()
152
	  if fuelParamEnter == "all" then    
153
		Fuel(true, 0)
154
    	  else
155
		Fuel(false, fuelParamEnter)
156
    	  end
157
	  print("Refuelled!\n")
158
      print("There is now "..turtle.getFuelLevel().." fuel inside of QuarryBot.")
159
	  sleep(2)
160
	end
161
	end
162
	CleanClear()
163
	textutils.slowPrint("Quarry Light Preview\n")
164
	print("Please enter how frequently you want the QuarryBot to place a torch on a wall of the Quarry.")
165
	print("(Per levels. For example, if you entered \'5\' then it would place a torch every 5 levels it goes down. If you do not want torches to be placed, enter \'0\'. If you are going to be placing torches, make sure that there are some torches in QuarryBot's inventory otherwise they won't be placed!)\n")
166
	local amountOfTorchesToPlace = tonumber(read())
167
	CleanClear()
168
	textutils.slowPrint("Starting Quarry...")
169
	sleep(3)
170
	Quarry(xD, zD, dep, amountOfTorchesToPlace)
171
end
172
end
173
174
function Start()
175
  CleanClear()
176
  textutils.slowPrint("Welcome to Quarry")
177
  sleep(2)
178
  print("How far on the X-Axis do you want to quarry?")
179
  local xDist = tonumber(read())
180
  sleep(1)
181
  print("How far on the Z-Axis do you want to quarry?")
182
  local zDist = tonumber(read())
183
  sleep(1)
184
  print("How deep would you like to quarry?")
185
  local depth = tonumber(read())
186
  sleep(1)
187
  print("How often would you like the QuarryBot to return to the surface?")
188
  print("(Per the amount of blocks the quarry mines.)")
189
  local returnFreq = tonumber(read())
190
  sleep(2)
191
  Confirm(xDist, zDist, depth, returnFreq)
192
end
193
194
Start()