Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local command_arguments= {...}
- local command_right_meters= tonumber(command_arguments[1])
- local command_forward_meters= tonumber(command_arguments[2])
- local k_max_depth= 3
- local k_refueling_level= 10000
- function travel_forward(
- forward_meters)
- for index= 1,forward_meters do
- repeat
- while turtle.dig() do
- -- NOTE: We're potentially clearing stuff as it's falling in front of us.
- end
- local moved_forward= turtle.forward() -- NOTE: We might fail if something just now fell in front of us.
- if not moved_forward then
- sleep(0.5) -- Make sure we're not tight-looping the server.
- end
- until moved_forward
- end
- end
- function travel_down(
- down_meters)
- local result_moved_meters= 0
- for index= 1,down_meters do
- local below_is_filled, below_data= turtle.inspectDown()
- if (below_is_filled and (below_data.name == "minecraft:bedrock")) then
- print("Found bedrock!")
- break
- end
- turtle.digDown()
- local moved_down= turtle.down()
- if (moved_down) then
- result_moved_meters= (result_moved_meters + 1)
- end
- end
- return result_moved_meters
- end
- function travel_up(
- up_meters)
- for index= 1,up_meters do
- repeat
- while turtle.digUp() do
- -- NOTE: We're potentially clearing stuff as it's falling on our head.
- end
- local moved_up= turtle.up() -- NOTE: We might fail if something just now fell onto us.
- if not moved_up then
- sleep(0.5) -- Make sure we're not tight-looping the server.
- end
- until moved_up
- end
- end
- function mega_mine(
- right_meters,
- forward_meters)
- for right_index= 1,right_meters do
- for bore_index= 1,math.ceil(forward_meters / 2) do
- local forward_index= (((bore_index - 1) * 2) + 1)
- -- Move to the bore hole.
- do
- travel_forward(forward_index-1)
- turtle.turnRight()
- travel_forward(right_index-1)
- turtle.turnLeft()
- end
- -- Bore a two-column tunnel (or just one column if we're at the end).
- do
- local moved_down_meters= travel_down(k_max_depth)
- if (forward_index < forward_meters) then
- travel_forward(1)
- forward_index= (forward_index + 1)
- end
- travel_up(moved_down_meters)
- end
- -- Return to the depot.
- do
- turtle.turnLeft()
- travel_forward(right_index - 1)
- turtle.turnLeft()
- travel_forward(forward_index - 1)
- end
- -- Empty the entire inventory into the depot.
- for slot_index= 1,16 do
- turtle.select(slot_index)
- turtle.drop()
- end
- turtle.turnRight()
- -- Refuel.
- while (turtle.getFuelLevel() < k_refueling_level) do
- local original_fuel_level= turtle.getFuelLevel()
- turtle.suck(1)
- local refuel_success= turtle.refuel(1)
- if refuel_success then
- print("Fueling +" .. (turtle.getFuelLevel() - original_fuel_level) .. ", now " .. turtle.getFuelLevel() .. "/" .. k_refueling_level .. ".")
- else
- print("Failed to refuel, waiting for fuel to arrive.")
- sleep(3.0)
- end
- end
- turtle.turnRight()
- end
- end
- end
- mega_mine(command_right_meters, command_forward_meters)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement