Added CC/OC scripts for laser tree farm

This commit is contained in:
LemADEC 2016-01-28 02:49:31 +01:00
parent 6ea640f071
commit ce55086e87
5 changed files with 340 additions and 0 deletions

View file

@ -1,6 +1,7 @@
package cr0s.warpdrive.block.collection; package cr0s.warpdrive.block.collection;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
@ -88,6 +89,7 @@ public class TileEntityLaserTreeFarm extends TileEntityAbstractMiner {
"tapTrees" "tapTrees"
}); });
laserMediumMaxCount = WarpDriveConfig.TREE_FARM_MAX_MEDIUMS_COUNT; laserMediumMaxCount = WarpDriveConfig.TREE_FARM_MAX_MEDIUMS_COUNT;
CC_scripts = Arrays.asList("farm", "stop");
} }
@Override @Override

View file

@ -0,0 +1,113 @@
if not term.isColor() then
print("Advanced computer required")
exit()
end
sides = peripheral.getNames()
treefarms = {}
for key,side in pairs(sides) do
if peripheral.getType(side) == "warpdriveLaserTreefarm" then
print("Wrapping " .. side)
table.insert(treefarms, peripheral.wrap(side))
end
end
noExit = true
breakLeaves = true
tapTrees = true
silktouch = false
args = {...}
if #args > 0 then
if args[1] == "help" or args[1] == "?" then
print("Usage: farm <breakLeaves> <tapTrees> <silktouch>")
print()
print("Farmer always farm above it.")
print("Use 'true' or '1' to enable an option.")
print("Use 'false' or '0' to disable an option.")
print("Default is to break leaves and tap rubber trees.")
print("Sapplings will be automatically replanted.")
print("Farming automatically stops when inventory is full.")
print()
noExit = false
else
if args[1] == "false" or args[1] == "0" then
breakLeaves = false
end
end
if #args > 1 then
if args[2] == "false" or args[2] == "0" then
tapTrees = false
end
end
if #args > 2 then
if args[3] == "true" or args[3] == "1" then
silktouch = true
end
end
end
if #treefarms == 0 then
term.setBackgroundColor(colors.red)
term.setTextColor(colors.white)
term.write("No laser tree farm detected")
noExit = false
end
if noExit then
for key,treefarm in pairs(treefarms) do
statusString, isActive = treefarm.state()
if not isActive then
treefarm.breakLeaves(breakLeaves)
treefarm.tapTrees(tapTrees)
treefarm.silktouch(silktouch)
treefarm.start()
end
end
sleep(1)
end
label = os.getComputerLabel()
if label then
else
label = "" .. os.getComputerID()
end
term.setTextColor(colors.blue)
if noExit then
repeat
isActive = false
for key,treefarm in pairs(treefarms) do
status, isActive, energy, totalHarvested, currentValuable, totalValuables = treefarm.state()
term.setBackgroundColor(colors.black)
term.clear()
term.setBackgroundColor(colors.lime)
term.setCursorPos(1, 1)
term.write(label .. " - Laser tree farm " .. key .. " of " .. #treefarms)
term.setBackgroundColor(colors.black)
term.setCursorPos(1, 3)
term.write("Status: " .. status .. " ")
term.setBackgroundColor(colors.black)
term.setCursorPos(1, 5)
term.write("Energy level is " .. energy .. " EU")
term.setCursorPos(1, 7)
term.write("Farmed " .. currentValuable .. " out of " .. totalValuables .. " blocks in current cycle ")
term.setCursorPos(1, 9)
term.write("Harvested " .. totalHarvested .. " items and counting... ")
if isActive then
sleep(1)
else
sleep(0.1)
end
end
until not isActive
end
term.setBackgroundColor(colors.black)
term.setTextColor(colors.white)
print()

View file

@ -0,0 +1,49 @@
if not term.isColor() then
print("Advanced computer required")
exit()
end
sides = peripheral.getNames()
treefarms = {}
for key,side in pairs(sides) do
if peripheral.getType(side) == "warpdriveLaserTreefarm" then
print("Wrapping " .. side)
table.insert(treefarms, peripheral.wrap(side))
end
end
label = os.getComputerLabel()
if label then
else
label = "" .. os.getComputerID()
end
term.setBackgroundColor(colors.black)
term.clear()
term.setBackgroundColor(colors.lime)
term.setCursorPos(1, 1)
term.write(label)
if #treefarms == 0 then
term.setBackgroundColor(colors.red)
term.setTextColor(colors.white)
term.write("No laser tree farm detected")
else
for key,treefarm in pairs(treefarms) do
term.setCursorPos(1, 2 + key)
statusString, isActive = treefarm.state()
if not isActive then
term.setBackgroundColor(colors.red)
term.setTextColor(colors.white)
term.write("Laser tree farm " .. key .. " of " .. #treefarms .. " is already stopped")
else
treefarm.stop()
term.setBackgroundColor(colors.lime)
term.setTextColor(colors.blue)
term.write("Laser tree farm " .. key .. " of " .. #treefarms .. " has been stopped")
end
end
end
term.setBackgroundColor(colors.black)
term.setTextColor(colors.white)
print()

View file

@ -0,0 +1,117 @@
local component = require("component")
local computer = require("computer")
local term = require("term")
if not term.isAvailable() then
computer.beep()
return
end
treefarms = {}
for address,type in component.list("warpdriveLaserTreefarm", true) do
print("Wrapping " .. address)
table.insert(treefarms, component.proxy(address))
end
function textOut(x, y, text, fg, bg)
if term.isAvailable() then
local w, h = component.gpu.getResolution()
if w then
component.gpu.setBackground(bg)
component.gpu.setForeground(fg)
component.gpu.set(x, y, text)
component.gpu.setBackground(0x000000)
end
end
end
noExit = true
breakLeaves = true
tapTrees = true
silktouch = false
args = {...}
if #args > 0 then
if args[1] == "help" or args[1] == "?" then
print("Usage: farm <breakLeaves> <tapTrees> <silktouch>")
print()
print("Farmer always farm above it.")
print("Use 'true' or '1' to enable an option.")
print("Use 'false' or '0' to disable an option.")
print("Default is to break leaves and tap rubber trees.")
print("Sapplings will be automatically replanted.")
print("Farming automatically stops when inventory is full.")
print()
noExit = false
else
if args[1] == "false" or args[1] == "0" then
breakLeaves = false
end
end
if #args > 1 then
if args[2] == "false" or args[2] == "0" then
tapTrees = false
end
end
if #args > 2 then
if args[3] == "true" or args[3] == "1" then
silktouch = true
end
end
end
if #treefarms == 0 then
computer.beep()
textOut(1, 2, "No laser tree farm detected", 0xFFFFFF, 0xFF0000)
noExit = false
end
if noExit then
for key,treefarm in pairs(treefarms) do
statusString, isActive = treefarm.state()
if not isActive then
treefarm.breakLeaves(breakLeaves)
treefarm.tapTrees(tapTrees)
treefarm.silktouch(silktouch)
treefarm.start()
end
end
os.sleep(1)
end
local file = io.open("/etc/hostname")
if file then
label = file:read("*l")
file:close()
else
label = "" .. computer.address()
end
if noExit then
repeat
isActive = false
for key,treefarm in pairs(treefarms) do
status, isActive, energy, totalHarvested, currentValuable, totalValuables = treefarm.state()
term.clear()
textOut(1, 1, label .. " - Laser tree farm " .. key .. " of " .. #treefarms, 0x0000FF, 0x00FF00)
textOut(1, 3, "Status: " .. status .. " ", 0x0000FF, 0x000000)
textOut(1, 4, "Energy level is " .. energy .. " EU", 0x0000FF, 0x000000)
textOut(1, 7, "Farmed " .. currentValuable .. " out of " .. totalValuables .. " blocks ", 0xFFFFFF, 0x000000)
textOut(1, 9, "Harvested " .. totalHarvested .. " items and counting... ", 0xFFFFFF, 0x000000)
if isActive then
os.sleep(1)
else
os.sleep(0.1)
end
end
until not isActive
end
textOut(1, 1, "", 0xFFFFFF, 0x000000)
print("")
print("")

View file

@ -0,0 +1,59 @@
local component = require("component")
local computer = require("computer")
local term = require("term")
if not term.isAvailable() then
computer.beep()
return
end
treefarms = {}
for address,type in component.list("warpdriveLaserTreefarm", true) do
table.insert(treefarms, component.proxy(address))
end
local file = io.open("/etc/hostname")
if file then
label = file:read("*l")
file:close()
else
label = "" .. computer.address()
end
term.clear()
function textOut(x, y, text, fg, bg)
if term.isAvailable() then
local w, h = component.gpu.getResolution()
if w then
component.gpu.setBackground(bg)
component.gpu.setForeground(fg)
component.gpu.set(x, y, text)
component.gpu.setBackground(0x000000)
end
end
end
textOut(1, 1, label, 0x00FF00, 0x000000)
print("")
if #treefarms == 0 then
computer.beep()
textOut(1, 2, "No laser tree farm detected", 0xFF0000, 0x000000)
else
for key,treefarm in pairs(treefarms) do
statusString, isActive = treefarm.state()
if not isActive then
textOut(1, 2 + key, "Mining laser " .. key .. " of " .. #treefarms .. " is already stopped", 0xFFFFFF, 0xFF0000)
else
treefarm.stop()
textOut(1, 2 + key, "Mining laser " .. key .. " of " .. #treefarms .. " has been stopped", 0x0000FF, 0x00FF00)
end
print("")
end
end
textOut(1, 1, "", 0xFFFFFF, 0x000000)
print("")
print("")