Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local tArgs = {...}
- local tNotBreak = {
- ["minecraft:bedrock"] = true,
- ["minecraft:chest"] = true,
- ["minecraft:ender_chest"] = true,
- }
- local tFuel = {
- ["minecraft:coal_block"] = true,
- ["minecraft:coal"] = true,
- ["minecraft:lava_bucket"] = true,
- ["minecraft:planks"] = true,
- }
- local tJunkItems = {
- ["minecraft:stone"] = true,
- ["minecraft:dirt"] = true,
- ["minecraft:sand"] = true,
- ["minecraft:gravel"] = true,
- ["mineraft:sandstone"] = true,
- ["minecraft:cobblestone"] = true,
- }
- local x, y, z, bucket = 8, 8, 8
- for i = 1, #tArgs, 2 do
- if tArgs[ i ]:lower() == "break" then
- local file = fs.open( tArgs[ i + 1 ], "r" )
- local data = file.readAll()
- file.close()
- for item in data:gmatch( "[^\r\n]+" ) do
- tNotBreak[ item ] = not tNotBreak[ item ]
- end
- elseif tArgs[ i ]:lower() == "fuel" then
- local file = fs.open( tArgs[ i + 1 ], "r" )
- local data = file.readAll()
- file.close()
- for item in data:gmatch( "[^\r\n]+" ) do
- tFuel[ item ] = not tFuel[ item ]
- end
- elseif tArgs[ i ]:lower() == "junk" then
- local file = fs.open( tArgs[ i + 1 ], "r" )
- local data = file.readAll()
- file.close()
- for item in data:gmatch( "[^\r\n]+" ) do
- tJunkItems[ item ] = not tJunkItems[ item ]
- end
- elseif tArgs[ i ]:lower() == "x" then
- x = tonumber( tArgs[ i + 1 ] )
- elseif tArgs[ i ]:lower() == "y" then
- y = tonumber( tArgs[ i + 1 ] )
- elseif tArgs[ i ]:lower() == "z" then
- z = tonumber( tArgs[ i + 1 ] )
- end
- end
- for i = 1, 16 do
- local t = turtle.getItemDetail( i )
- if t then
- if t.name == "minecraft:bucket" then
- bucket = i
- end
- end
- end
- local function safeDig()
- local b, t = turtle.inspect()
- if not b or tNotBreak[ t.name ] then
- --Don't dig it
- elseif t.name == "minecraft:lava" and bucket then
- turtle.select( bucket )
- turtle.place()
- turtle.refuel( 1 )
- return true
- else
- --dig
- return turtle.dig()
- end
- end
- local function safeDigUp()
- local b, t = turtle.inspectUp()
- if not b or tNotBreak[ t.name ] then
- --Don't dig it
- elseif t.name == "minecraft:lava" and bucket then
- turtle.select( bucket )
- turtle.placeUp()
- turtle.refuel( 1 )
- return true
- else
- --dig
- return turtle.digUp()
- end
- end
- local function safeDigDown()
- local b, t = turtle.inspectDown()
- if not b or tNotBreak[ t.name ] then
- --Don't dig it
- elseif t.name == "minecraft:lava" and bucket then
- turtle.select( bucket )
- turtle.placeDown()
- turtle.refuel( 1 )
- return true
- else
- --dig
- return turtle.digDown()
- end
- end
- local function checkInventory()
- for i = 1, 16 do
- local t = turtle.getItemDetail( i )
- if t then
- if tJunkItems[ t.name ] then
- --we don't want it
- turtle.select( i )
- turtle.drop()
- elseif tFuel[ t.name ] and turtle.getFuelLevel() < turtle.getFuelLimit() / 2 then
- turtle.select( i )
- turtle.refuel( 1 )
- end
- end
- end
- end
- local function column()
- for i = 1, y do
- local down = 1
- while safeDigDown() or not turtle.detectDown() do
- while not turtle.down() do turtle.attackDown() end
- safeDig()
- turtle.turnRight()
- safeDig()
- turtle.turnRight()
- turtle.turnRight()
- safeDig()
- turtle.turnRight()
- down = down + 1
- if down == z then
- break
- end
- end
- for i = down, 1, -1 do
- turtle.up()
- end
- repeat safeDig() until turtle.forward()
- repeat safeDig() until turtle.forward()
- end
- end
- local function main()
- for i = 1, x do
- column()
- turtle.turnRight()
- safeDig()
- while not turtle.forward() do turtle.attack() end
- turtle.turnRight()
- turtle.forward()
- column()
- turtle.turnLeft()
- safeDig()
- while not turtle.forward() do turtle.attack() end
- turtle.turnLeft()
- end
- end
- parallel.waitForAny( main, function() while true do sleep( 10 ) checkInventory() end end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement