jille_Jr icon

CC: Treefarm - main.lua

jille_Jr | PRO | 05/29/14 09:03:22 AM UTC | 0 ⭐ | 544 👁️ | Never ⏰ | []
Lua |

3.24 KB

|

None

|

0 👍

/

0 👎

 
--(( Settings ))--
 
-- wether or not if the turtle should
-- attack mobs if they are in their way
local killMobs = true
 
-- 
local destroyBlocks = false
 
-- apis to load, file path
-- will be loaded in ascending order, top to bottom
-- will ignore file extension when loading
-- ex: 'dig.lua' can be refered as 'dig'
local apis = {
    "dig.lua",
    "gps.lua",
    "farm.lua",
    "item.lua",
}
 
_G.oldAPISyntax = "_old"
 
--(( Variables ))--
 
-- the directory of the program running
local programDir = shell.getRunningProgram() -- get the full path
programDir = programDir:match("^.+/") or "" -- get the folder
 
-- load apis
 
 
--(( Functions ))--
 
-- table input should be indexed by integers
-- example input: {"john","brad","tony","steve"}   ", "   ", and "
-- example output: "john, brad, tony, and steve"
local function combine( t,seperator,lastSeperator )
    local str = ""
 
    for index,value in ipairs(t) do
        if index == 1 then
            str = str .. value
        elseif index > 1 and index < #t then
            str = str .. seperator .. value
        elseif index == #t then
            str = str .. lastSeperator .. value
        end
    end
 
    return str
end
 
local function loadAPIs( t )
    local failed = {} -- apis that failed to load
    -- loop through all apis
    for _,path in ipairs(apis) do
        local fullPath = programDir .. path
        local fileName = fs.getName(fullPath)-- remove directory
 
        local apiName = fileName
        apiName = apiName:match("^.+%.") or apiName.."." -- remove the file extension
        apiName = apiName:sub(0,-2) -- remove the dot at the end
 
        -- if its already loaded; unload it first
        --if _G[apiName] then
        --  os.unloadAPI(apiName)
        --end
 
        -- load api, move its global position
        local oldvar = _G[fileName]
        if os.loadAPI(fullPath) then
            -- in case theres an api already loaded
            if _G[apiName] ~= nil and _G[apiName.._G.oldAPISyntax]==nil then
                _G[apiName.._G.oldAPISyntax] = _G[apiName]
            end
 
            _G[apiName] = _G[fileName]
        else
            table.insert(failed,fullPath)
        end
        -- in case of overriding, reset
        _G[fileName] = oldvar
 
        -- give it functions
        if type(_G[apiName]) == "table" then
            if type(_G[apiName].init) == "function" then
                local state,err = pcall(_G[apiName].init,_G)
                if not state then print(apiName..": "..err)table.insert(failed,fullPath) end
            end
        end
    end
 
    if #failed == 1 then
        error("Unable to load API "..failed[1].."!",0)
    elseif #failed > 1 then
        error("Unable to load APIs "..combine(failed,", ",", and ").."!",0)
    end
end
 
function _G.mult( num )
    if num > 0 then return 1 end
    if num < 0 then return -1 end
    return 0
end
 
--(( Error checking ))--
 
-- load apis
loadAPIs()
 
--(( Main program ))--
print("main step 1")
farm.setOffset( 3,4,1 )print("main step 2")
farm.setSize( 7,-5,4 )print("main step 3")
if not gps.autoSetPosition() then error("unable to locate position via gps",0) end print("main step 4")
gps.setHome(245,60,-765,gps.east)print("main step 5")
gps.goto(gps.getHome())
 
item.addStoragePathCheckpoint(246,60,-765)
item.addStoragePathCheckpoint(244,60,-765)
item.setItemAccess(item.types.dirt,244,60,-766,gps.down)
item.setItemAccess(item.types.sapling,244,60,-765,gps.down)
item.setItemAccess(item.types.dropoff,244,60,-764,gps.down)
 
 
--(( EOF ))--

Comments