minetst-mod-nsspf/init.lua

550 lines
16 KiB
Lua
Raw Normal View History

2016-12-26 07:19:21 -08:00
minetest.register_node("nsspf:boletus_edulis", {
description = "Boletus edulis",
drawtype = "mesh",
mesh = "boletus.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"boletus_edulis.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
})
2016-12-26 14:14:58 -08:00
minetest.register_node("nsspf:canthrellus_cibarius", {
description = "Cantharellus cibarius",
drawtype = "mesh",
mesh = "cantharellus_cibarius.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"cantharellus_cibarius.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, -0.26, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, -0.26, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:suillus_grevillei", {
description = "Suillus grevillei",
drawtype = "mesh",
mesh = "suillus_grevillei.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"suillus_grevillei.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:morchella_conica", {
description = "Morchella conica",
drawtype = "mesh",
mesh = "morchella_conica.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"morchella_conica.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.15, -0.49, -0.15, 0.15, 0.06, 0.15}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.15, -0.49, -0.15, 0.15, 0.06, 0.15}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:russula_xerampelina", {
description = "Russula xerampelina",
drawtype = "mesh",
mesh = "russula.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"russula_xerampelina.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:boletus_pinophilus", {
description = "Boletus pinophilus",
drawtype = "mesh",
mesh = "boletus.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"boletus_pinophilus.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
})
2016-12-26 07:19:21 -08:00
minetest.register_node("nsspf:boletus_satanas", {
description = "Boletus satanas",
drawtype = "mesh",
mesh = "boletus.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"boletus_satanas.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.28, -0.49, -0.28, 0.28, 0.06, 0.28}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:amanita_phalloides", {
description = "Amanita phalloides",
drawtype = "mesh",
mesh = "amanita.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"amanita_phalloides.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.05, -0.49, -0.05, 0.05, 0.2, 0.05}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.05, -0.49, -0.05, 0.05, 0.2, 0.05}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:amanita_muscaria", {
description = "Amanita muscaria",
drawtype = "mesh",
mesh = "amanita.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"amanita_muscaria.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.05, -0.49, -0.05, 0.05, 0.2, 0.05}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.05, -0.49, -0.05, 0.05, 0.2, 0.05}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:macrolepiota_procera", {
description = "macrolepiota_procera",
drawtype = "mesh",
mesh = "macrolepiota_procera.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"macrolepiota_procera.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.05, -0.49, -0.05, 0.05, 0.2, 0.05}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.05, -0.49, -0.05, 0.05, 0.2, 0.05}, -- Right, Bottom, Back, Left, Top, Front
},
})
2016-12-26 14:14:58 -08:00
function nsspf_register_mycorrhizalmycelium (name, descr, tree)
2016-12-26 07:19:21 -08:00
minetest.register_node("nsspf:"..name.."_mycelium", {
description = descr,
tiles = {"mycorrhizalmycelium.png"},
groups = {crumbly = 2},
})
minetest.register_abm({
nodenames = {"default:dirt"},
2016-12-26 14:14:58 -08:00
neighbors = {tree},
2016-12-26 07:19:21 -08:00
interval = 30.0,
chance = 20,
action = function(pos, node)
local flag = 0
for dx = -2,2 do
for dy = -2,2 do
for dz = -2,1 do
local pos1 = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(pos1).name
if n == "nsspf:amanita_muscaria_mycelium" or n == "nsspf:amanita_phalloides_mycelium" or n == "nsspf:boletus_edulis_mycelium" or n == "nsspf:boletus_satanas_mycelium" then
flag = 1
return
end
end
end
end
if flag == 0 then
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "nsspf:"..name.."_mycelium"})
end
end
})
minetest.register_abm({
nodenames = {"nsspf:"..name.."_mycelium"},
neighbors = {"air"},
interval = 1,
chance = 1,
action =
function(pos, node)
minetest.set_node(pos, {name="default:dirt"})
end
})
minetest.register_abm({
nodenames = {"default:dirt"},
neighbors = {"nsspf:"..name.."_mycelium"},
interval = 30.0,
chance = 20,
action = function(pos, node)
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "nsspf:"..name.."_mycelium"})
end
})
minetest.register_abm({
nodenames = {"nsspf:"..name.."_mycelium"},
neighbors = {"default:dirt_with_grass"},
interval = 30.0,
chance = 20,
action = function(pos, node)
local pos1 = {x=pos.x, y=pos.y+2, z=pos.z}
local pos2 = {x=pos.x, y=pos.y+1, z=pos.z}
local n = minetest.env:get_node(pos1).name
local nn = minetest.env:get_node(pos2).name
if n== "air" and nn== "default:dirt_with_grass" then
minetest.set_node({x = pos1.x, y = pos1.y, z = pos1.z}, {name = "nsspf:"..name})
end
end
})
end
2016-12-26 14:14:58 -08:00
nsspf_register_mycorrhizalmycelium ('amanita_muscaria','Amanita muscaria Mycelium', "default:pine_tree")
nsspf_register_mycorrhizalmycelium ('amanita_phalloides','Amanita phalloides Mycelium', "default:pine_tree")
nsspf_register_mycorrhizalmycelium ('boletus_edulis','Boletus edulis Mycelium', "default:tree")
nsspf_register_mycorrhizalmycelium ('boletus_satanas','Boletus satanas Mycelium', "default:tree")
nsspf_register_mycorrhizalmycelium ('boletus_pinophilus','Boletus pinophilus Mycelium', "default:pine_tree")
nsspf_register_mycorrhizalmycelium ('suillus_grevillei','Suillus grevillei Mycelium','default:pine_tree')
nsspf_register_mycorrhizalmycelium ('russula_xerampelina','Russula xerampelina Mycelium', "default:pine_tree")
nsspf_register_mycorrhizalmycelium ('cantharellus_cibarius','Cantherellus cibarius Mycelium', "default:pine_tree")
nsspf_register_mycorrhizalmycelium ('morchella_conica','Morchella conica Mycelium', "default:aspen_tree")
2016-12-26 07:19:21 -08:00
--nsspf_register_mycelium ('macrolepiota_procera_mycelium','')
--nsspf_register_mycelium ('','')
2016-12-26 14:14:58 -08:00
--tuber
2016-12-26 07:19:21 -08:00
function nsspf_register_tuber (name, descr, tree)
minetest.register_node("nsspf:"..name.."_tuber_mycelium", {
description = descr,
tiles = {"tuber_mycelium.png"},
groups = {crumbly = 2},
})
minetest.register_abm({
nodenames = {"default:dirt"},
neighbors = {tree},
interval = 20.0,
chance = 10,
action = function(pos, node)
local flag = 0
for dx = -2,2 do
for dy = -2,2 do
for dz = -2,1 do
local pos1 = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(pos1).name
if n == "nsspf:tuber_magnatum_pico" or n == "nsspf:tuber_melanosporum" or n == "nsspf:tuber_borchii" or n == "nsspf:terfezia_arenaria" then
flag = 1
return
end
end
end
end
if flag == 0 then
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "nsspf:"..name.."_tuber_mycelium"})
end
end
})
minetest.register_abm({
nodenames = {"nsspf:"..name.."_tuber_mycelium"},
neighbors = {"air"},
interval = 1,
chance = 1,
action =
function(pos, node)
minetest.set_node(pos, {name="nsspf:"..name.."_fungusdirt"})
end
})
minetest.register_node("nsspf:"..name.."_fruit", {
description = descr.." Fruit",
tiles = {"default_dirt.png"},
drop = "nsspf:"..name,
groups = {crumbly = 3},
})
minetest.register_abm({
nodenames = {"default:dirt"},
neighbors = {"nsspf:"..name.."_tuber_mycelium"},
interval = 20.0,
chance = 10,
action = function(pos, node)
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "nsspf:"..name.."_tuber_mycelium"})
end
})
minetest.register_craftitem("nsspf:"..name, {
description = descr,
image = name..".png",
})
minetest.register_craftitem("nsspf:"..name.."_spores", {
description = descr.." Spores",
image = "spores.png",
})
minetest.register_abm({
nodenames = {"default:dirt"},
neighbors = {"nsspf:"..name.."_tuber_mycelium"},
interval = 30.0,
chance = 20,
action = function(pos, node)
minetest.set_node({x = pos.x, y = pos.y, z = pos.z}, {name = "nsspf:"..name.."_fruit"})
end
})
end
nsspf_register_tuber ("tuber_magnatum_pico","Tuber magnatum pico","default:tree")
nsspf_register_tuber ("tuber_melanosporum","Tuber melanosporum","default:pine_tree")
nsspf_register_tuber ("tuber_borchii","Tuber borchii","default:aspen_tree")
nsspf_register_tuber ("terfezia_arenaria","Terfezia arenaria","default:acacia_tree")
minetest.register_node("nsspf:tuber_melanosporum_fungusdirt", {
description = "Tuber melanosporum Dirt",
tiles = {"default_dirt.png"},
drop = {
max_items = 1,
items = {
{
items = {'node "nsspf:tuber_melanosporum_spores" 1'},
rarity = 20
},
}
},
groups = {crumbly = 3},
})
minetest.register_node("nsspf:tuber_magnatum_pico_fungusdirt", {
description = "Tuber magnatum pico Dirt",
tiles = {"default_dirt.png"},
drop = {
max_items = 1,
items = {
{
items = {'node "nsspf:tuber_magnatum_pico_spores" 1'},
rarity = 30
},
}
},
groups = {crumbly = 3},
})
minetest.register_node("nsspf:tuber_borchii_fungusdirt", {
description = "Tuber borchii Dirt",
tiles = {"default_dirt.png"},
drop = {
max_items = 1,
items = {
{
items = {'node "nsspf:tuber_borchii_spores" 1'},
rarity = 10
},
}
},
groups = {crumbly = 3},
})
minetest.register_node("nsspf:terfezia_arenaria_fungusdirt", {
description = "Terfezia arenaria Dirt",
tiles = {"default_dirt.png"},
drop = {
max_items = 1,
items = {
{
items = {'node "nsspf:terfezia_arenaria_spores" 1'},
rarity = 10
},
}
},
groups = {crumbly = 3},
2016-12-26 14:14:58 -08:00
})
--Saprotrophic fungi that live on trees
minetest.register_node("nsspf:fistulina_hepatica", {
description = "Fistulina hepatica",
drawtype = "mesh",
mesh = "fistulina_hepatica.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"fistulina_hepatica.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.5, -0.1, -0.5, 0.5, 0.1, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.5, -0.1, -0.5, 0.5, 0.1, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:armillaria_mellea", {
description = "Armillaria mellea",
drawtype = "mesh",
mesh = "armillaria_mellea.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"armillaria_mellea.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.2, 0, 0.2, 0.2, 0.4, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.2, 0, 0.2, 0.2, 0.4, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:panellus_pusillus", {
description = "Panellus pusillus",
drawtype = "mesh",
mesh = "panellus_pusillus.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"panellus_pusillus.png"},
groups = {snappy=3},
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.2, -0.4, 0.2, 0.2, 0.4, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.2, -0.4, 0.2, 0.2, 0.4, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
})
minetest.register_node("nsspf:panellus_pusillus_light", {
description = "Nocturn Panellus pusillus",
drawtype = "mesh",
mesh = "panellus_pusillus.b3d",
paramtype = 'light',
paramtype2 = 'facedir',
tiles = {"panellus_pusillus_light.png"},
groups = {snappy=3},
light_source = 10,
-- drop = 'default:dirt',
selection_box = {
type = 'fixed',
fixed = {-0.2, -0.4, 0.2, 0.2, 0.4, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
collision_box = {
type = 'fixed',
fixed = {-0.2, -0.4, 0.2, 0.2, 0.4, 0.5}, -- Right, Bottom, Back, Left, Top, Front
},
})
--spawna random sui tronchi, controlli
function nssbf_register_saprotrophicontrees (name, descr, tree)
minetest.register_abm({
nodenames = {tree},
neighbors = {"air"},
interval = 10.0,
chance = 20,
action = function(pos, node)
local pos1 = {x=pos.x, y=pos.y, z=pos.z-1}
local n = minetest.env:get_node(pos1).name
if n == 'air' then
minetest.set_node({x = pos.x, y = pos.y, z = pos.z-1}, {name = "nsspf:"..name})
end
end
})
end
nssbf_register_saprotrophicontrees ('armillaria_mellea', 'Armillaria mellea', 'default:tree')
nssbf_register_saprotrophicontrees ('panellus_pusillus', 'Panellus pusillus', 'default:tree')
nssbf_register_saprotrophicontrees ('fistulina_hepatica', 'Fistulina hepatica', 'default:tree')
local OPEN_TIME_START = 0.2 -- Day time at which moon flowers open up
local OPEN_TIME_END = 0.8 -- Day time at which moon flowers close up
local OPEN_CHECK = 10 -- Interval at which to check if lighting changed
set_fl = function (pos)
if (minetest.env:get_node_light(pos, 0.5) == 15)
and ((minetest.env:get_timeofday() < OPEN_TIME_START) or (minetest.env:get_timeofday() > OPEN_TIME_END)) then
minetest.env:add_node(pos, { name = "nsspf:panellus_pusillus" })
else
minetest.env:add_node(pos, { name = "nsspf:panellus_pusillus_light" })
end
end
minetest.register_abm({
nodenames = { "nsspf:panellus_pusillus", "nsspf:panellus_pusillus_light" },
interval = OPEN_CHECK,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
set_fl(pos)
end
2016-12-26 07:19:21 -08:00
})