Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
-- Strip Mining Program V2.0.1 -- -- Includes anti-gravel protocol -- -- Mines until full, then terminates -- -- Connects to central monitor to relay inventory information -- -- Version 2 introduces a more automated algorithm, allowing for deposition of items once full and returning to mining -- Tunnels are always two wide, 3 high in current version -- -- use "label set MiningTurtleX" to name turtles, and set "chn" to the same number -- pastebin get Cfdm64bB mine -- Config -- ver = "V2.0.1" Mside = "left" -- set to whatever side the modem is on the turtle chn = 1 -- set to channel you want to transmit on -- Defining tables and variables -- local ores = { ["minecraft:diamond_ore"]=true, ["minecraft:emerald_ore"]=true, ["minecraft:emerald_ore"]=true, ["minecraft:gold_ore"]=true, ["minecraft:iron_ore"]=true, ["minecraft:redstone_ore"]=true, ["minecraft:lapis_ore"]=true, ["minecraft:coal_ore"]=true, ["ic2:blockmetal"]=true, ["galacticraftcore:basic_block_core"] = true } local gravel = { ["minecraft:gravel"]=true } local chest = 0 local inv = {} local Cscan = {} local logFile = fs.open("minelog", "a") -- Assinging functions -- function log(data) -- function to write data into minelog file logFile.writeLine(data) end function minenup(repeats) -- turtle moving up then mining cl() print("Mining...") for i = 1,repeats do turtle.up() turtle.dig() scan() cl() print("Mining...") end end function minend(repeats) -- turtle moving down then mining cl() print("Mining...") for l = 1,repeats do turtle.down() turtle.dig() scan() cl() print("Mining...") end end function scan() -- scanning blocks around turtle cl() print("Scanning surroundings...") success, Cscan = turtle.inspectUp() if ores[Cscan.name] then turtle.digUp() log(Cscan.name) end success, Cscan = turtle.inspectDown() if ores[Cscan.name] then turtle.digDown() log(Cscan.name) end for i = 1,4 do success, Cscan = turtle.inspect() if ores[Cscan.name] then log(Cscan.name) turtle.dig() turtle.turnRight() elseif gravel[Cscan.name] then while gravel[Cscan.name] do turtle.dig() success, Cscan = turtle.inspect() end turtle.turnRight() else turtle.turnRight() end end end function mineLayer() cl() print("Mining...") for k = 1,2 do readInv() scan() turtle.dig() minenup(2) turtle.turnLeft() turtle.forward() turtle.turnRight() turtle.dig() scan() minend(2) turtle.forward() turtle.turnRight() scan() turtle.forward() turtle.turnLeft() chest = chest + 1 end end function cl() term.clear() term.setCursorPos(1,1) end function writeFull() -- obsolete local startup = fs.open("startup", "w") startup.writeLine("term.clear()") startup.writeLine("term.setCursorPos(1,1)") startup.writeLine("_G.printError('Inventory full, terminating program...')") startup.close() end function inList(str, list) for _,row in ipairs(list) do if row[1] == str then return true end end return false end function readInv() cl() print("Reading inventory...") sleep(0.5) local inv = {} table.insert(inv, {"Slot", "Name", "Count"}) turtle.select(1) for i = 1,16 do turtle.select(i) local detail = turtle.getItemDetail(i, true) if detail then table.insert (inv, {tostring(i), detail.name, tostring(detail.count)}) end end turtle.select(1) trans(inv) check = inList("16", inv) if check == true then rtb() end end function rtb() -- function to return to start and deposit, then go back and carry on cl() _G.printError("Inventory full, depositing...") turtle.turnRight() turtle.turnRight() for i = 1,chest do turtle.forward() end for i = 1,16 do turtle.select(i) turtle.dropDown() end turtle.select(1) turtle.turnRight() turtle.turnRight() readInv() for i = 0,chest do turtle.forward() end end -- Rednet -- modem = peripheral.wrap(Mside) open = rednet.isOpen() modem.open(chn) if open == false then cl() print("Opening modem...") rednet.open(Mside) sleep(0.5) end function trans(msg) cl() print("Transmitting to base on channel " .. chn .. "...") modem.transmit(chn, 999, msg) sleep(0.5) end -- Start of program -- cl() print("Initialising strip mining program " .. ver .. "...") sleep(1) -- Main WHILE loop -- repeat mineLayer() until check == true -- Main WHILE loop -- -- TESTING AREA -- if logFile then logFile.close() -- closing log file, if still open end
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)