2018-10-08 22:49:44 -07:00
|
|
|
local S = farming.intllib
|
|
|
|
|
|
|
|
farming.path = minetest.get_modpath("farming")
|
|
|
|
|
|
|
|
local crop_definition = {}
|
|
|
|
|
2018-10-09 22:42:52 -07:00
|
|
|
-- import configurations from crops.csv
|
2018-10-08 22:49:44 -07:00
|
|
|
local file = io.open(farming.path .. "/crops.csv", "r")
|
|
|
|
for line in file:lines() do
|
|
|
|
local attribs = line:split(",", true)
|
2018-10-10 09:28:58 -07:00
|
|
|
local name,enabled,next_plant,rarety,steps,harvest_max,eat_hp,to_culture,to_dig,has_harvest,on_soil,
|
|
|
|
punchable,infectable,seed_extractable,use_flail,use_trellis,snappy,temperature_min,temperature_max,
|
|
|
|
humidity_min,humidity_max,elevation_min,elevation_max,light_min,light_max,
|
|
|
|
infect_rate_base,infect_rate_monoculture,spread_rate,grow_time_mean = unpack(attribs)
|
2018-10-08 22:49:44 -07:00
|
|
|
if #name > 0 and name:sub(1,1) ~= "#" and #enabled > 0 and #steps > 0 then
|
|
|
|
crop_definition[name]={
|
|
|
|
paramtype2 = "meshoptions",
|
|
|
|
fertility = {"grassland"},
|
|
|
|
place_param2 = 3,
|
|
|
|
groups = {farming=1},
|
2018-10-09 22:42:52 -07:00
|
|
|
mod_name=minetest.get_current_modname(),
|
2018-10-08 22:49:44 -07:00
|
|
|
steps = tonumber(steps),
|
2018-10-10 05:37:07 -07:00
|
|
|
environment={
|
|
|
|
grow_time_mean=tonumber(grow_time_mean),
|
|
|
|
harvest_max=tonumber(harvest_max),
|
|
|
|
light_min=tonumber(light_min),
|
|
|
|
light_max=tonumber(light_max) or default.LIGHT_MAX,
|
|
|
|
temperature_min=tonumber(temperature_min),
|
|
|
|
temperature_max=tonumber(temperature_max),
|
|
|
|
humidity_min=tonumber(humidity_min),
|
|
|
|
humidity_max=tonumber(humidity_max),
|
|
|
|
elevation_min=tonumber(elevation_min),
|
|
|
|
elevation_max=tonumber(elevation_max),
|
|
|
|
rarety=tonumber(rarety),
|
|
|
|
},
|
2018-10-09 22:42:52 -07:00
|
|
|
name=name,
|
2018-10-08 22:49:44 -07:00
|
|
|
description=S(name),
|
|
|
|
eat_hp=tonumber(eat_hp),
|
|
|
|
next_plant=next_plant,
|
|
|
|
spawnon = farming.change_soil or {"default:dirt_with_grass"},
|
|
|
|
infect = {
|
|
|
|
base_rate = tonumber(infect_rate_base),
|
|
|
|
mono_rate = tonumber(infect_rate_monoculture),
|
|
|
|
},
|
|
|
|
spread = {spreadon = farming.change_soil or {"default:dirt_with_grass"},
|
|
|
|
base_rate = tonumber(spread_rate),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
if #on_soil > 0 then
|
|
|
|
crop_definition[name].groups["on_soil"]=tonumber(on_soil)
|
|
|
|
end
|
|
|
|
if #to_culture > 0 then
|
|
|
|
crop_definition[name].groups["to_culture"]=tonumber(to_culture)
|
|
|
|
end
|
|
|
|
if #punchable > 0 then
|
|
|
|
crop_definition[name].groups["punchable"]=tonumber(punchable)
|
|
|
|
end
|
|
|
|
if #has_harvest > 0 then
|
|
|
|
crop_definition[name].groups["has_harvest"]=tonumber(has_harvest)
|
|
|
|
end
|
|
|
|
if #infectable > 0 then
|
|
|
|
crop_definition[name].groups["infectable"]=tonumber(infectable)
|
|
|
|
end
|
2018-10-09 05:47:37 -07:00
|
|
|
if #seed_extractable > 0 then
|
|
|
|
crop_definition[name].groups["seed_extractable"]=tonumber(seed_extractable)
|
|
|
|
end
|
2018-10-10 05:37:07 -07:00
|
|
|
if #use_flail > 0 then
|
|
|
|
crop_definition[name].groups["use_flail"]=tonumber(use_flail)
|
|
|
|
end
|
|
|
|
if #use_trellis > 0 then
|
|
|
|
crop_definition[name].groups["use_trellis"]=tonumber(use_trellis)
|
|
|
|
end
|
2018-10-09 05:47:37 -07:00
|
|
|
if #snappy > 0 then
|
|
|
|
crop_definition[name].groups["snappy"]=tonumber(snappy)
|
|
|
|
else
|
|
|
|
crop_definition[name].groups["snappy"]=3
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2018-10-10 05:37:07 -07:00
|
|
|
file:close()
|
2018-10-09 05:47:37 -07:00
|
|
|
|
2018-10-09 22:42:52 -07:00
|
|
|
-- voids are filled from default
|
2018-10-09 05:47:37 -07:00
|
|
|
if crop_definition["default"]~=nil then
|
|
|
|
local default_def = crop_definition["default"]
|
2018-10-09 22:42:52 -07:00
|
|
|
for i,tdef in pairs(crop_definition) do
|
2018-10-09 05:47:37 -07:00
|
|
|
if tdef.name ~= "default" then
|
|
|
|
local tdef_name = tdef.name
|
|
|
|
for _,colu in ipairs({"rarety","harvest_max","temperature_min","temperature_max",
|
2018-10-09 22:42:52 -07:00
|
|
|
"humidity_min","humidity_max","elevation_min","elevation_max"}) do
|
2018-10-10 05:37:07 -07:00
|
|
|
if crop_definition[tdef_name].environment[colu] == nil then
|
|
|
|
crop_definition[tdef_name].environment[colu] = default_def.environment[colu]
|
2018-10-09 05:47:37 -07:00
|
|
|
end
|
|
|
|
end
|
2018-10-09 22:42:52 -07:00
|
|
|
if crop_definition[tdef_name].infect.base_rate == nil then
|
|
|
|
crop_definition[tdef_name].infect.base_rate = default_def.infect.base_rate or 0.001
|
|
|
|
end
|
|
|
|
if crop_definition[tdef_name].infect.mono_rate == nil then
|
|
|
|
crop_definition[tdef_name].infect.mono_rate = default_def.infect.mono_rate or 0.01
|
|
|
|
end
|
|
|
|
if crop_definition[tdef_name].spread.base_rate == nil then
|
|
|
|
crop_definition[tdef_name].spread.base_rate = default_def.spread.base_rate or 0.001
|
|
|
|
end
|
|
|
|
biom_def={
|
2018-10-10 05:37:07 -07:00
|
|
|
min_temp=crop_definition[tdef_name].environment.temperature_min,
|
|
|
|
max_temp=crop_definition[tdef_name].environment.temperature_max,
|
|
|
|
min_humidity=crop_definition[tdef_name].environment.humidity_min,
|
|
|
|
max_humidity=crop_definition[tdef_name].environment.humidity_max,
|
|
|
|
spawnon={spawn_min=crop_definition[tdef_name].environment.elevation_min,
|
|
|
|
spawn_max=crop_definition[tdef_name].environment.elevation_max,
|
2018-10-09 22:42:52 -07:00
|
|
|
},}
|
2018-10-10 09:28:58 -07:00
|
|
|
local crop_spawnon={}
|
|
|
|
local crop_biom = farming.get_biomes(biom_def)
|
|
|
|
for _,bio in pairs(crop_biom) do
|
|
|
|
local tbio=minetest.registered_biomes[bio]
|
|
|
|
if tbio.node_top then
|
|
|
|
crop_spawnon[tbio.node_top] = 1
|
|
|
|
end
|
|
|
|
end
|
|
|
|
local csp = {}
|
|
|
|
for nod,val in pairs(crop_spawnon) do
|
|
|
|
table.insert(csp,nod)
|
|
|
|
end
|
|
|
|
crop_definition[tdef_name].biomes=crop_biom
|
|
|
|
crop_definition[tdef_name].spawnon=csp
|
|
|
|
crop_definition[tdef_name].spread.spreadon=csp
|
2018-10-08 22:49:44 -07:00
|
|
|
end
|
2018-10-09 05:47:37 -07:00
|
|
|
end
|
2018-10-08 22:49:44 -07:00
|
|
|
end
|
2018-10-09 22:42:52 -07:00
|
|
|
|
|
|
|
-- register crops
|
|
|
|
for i,tdef in pairs(crop_definition) do
|
|
|
|
if i ~= "default" then
|
|
|
|
print("farming registering "..tdef.name)
|
|
|
|
farming.register_plant(tdef)
|
|
|
|
end
|
|
|
|
end
|