dryplants/dryplants/junglegrass.lua

168 lines
5.1 KiB
Lua

-- Code by VanessaE and Mossmanikin (and maybe some of Ironzorg's Flowers mod code left)
-- The different sizes of junglegrass used to be part of VanessaE's Plantlife modpack/Junglegrass mod
-- For compatibility with older stuff
minetest.register_alias("junglegrass:shortest","dryplants:junglegrass_shortest")
minetest.register_alias("junglegrass:short" ,"dryplants:junglegrass_short" )
minetest.register_alias("junglegrass:medium" ,"dryplants:junglegrass_medium" )
local SPAWN_DELAY = 1000
local SPAWN_CHANCE = 200
local GROW_DELAY = 500
local GROW_CHANCE = 30
local junglegrass_seed_diff = 329
local grasses_list = {
{"dryplants:junglegrass_shortest", "dryplants:junglegrass_short" , 1 },
{"dryplants:junglegrass_short" , "dryplants:junglegrass_medium", 2 },
{"dryplants:junglegrass_medium" , "default:junglegrass" , 3 },
{"default:junglegrass" , nil , 4 }
}
minetest.register_node('dryplants:junglegrass_medium', {
description = "Jungle Grass (medium height)",
drawtype = 'plantlike',
tile_images = { 'dryplants_junglegrass_medium.png' },
inventory_image = 'dryplants_junglegrass_medium.png',
wield_image = 'dryplants_junglegrass_medium.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3, flammable=2, junglegrass=1, flora=1 },
sounds = default.node_sound_leaves_defaults(),
drop = 'default:junglegrass',
selection_box = {
type = "fixed",
fixed = {-0.4, -0.5, -0.4, 0.4, 0.5, 0.4},
},
buildable_to = true,
})
minetest.register_node('dryplants:junglegrass_short', {
description = "Jungle Grass (short)",
drawtype = 'plantlike',
tile_images = { 'dryplants_junglegrass_short.png' },
inventory_image = 'dryplants_junglegrass_short.png',
wield_image = 'dryplants_junglegrass_short.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3, flammable=2, junglegrass=1, flora=1 },
sounds = default.node_sound_leaves_defaults(),
drop = 'default:junglegrass',
selection_box = {
type = "fixed",
fixed = {-0.4, -0.5, -0.4, 0.4, 0.3, 0.4},
},
buildable_to = true,
})
minetest.register_node('dryplants:junglegrass_shortest', {
description = "Jungle Grass (very short)",
drawtype = 'plantlike',
tile_images = { 'dryplants_junglegrass_shortest.png' },
inventory_image = 'dryplants_junglegrass_shortest.png',
wield_image = 'dryplants_junglegrass_shortest.png',
sunlight_propagates = true,
paramtype = 'light',
walkable = false,
groups = { snappy = 3, flammable=2, junglegrass=1, flora=1 },
sounds = default.node_sound_leaves_defaults(),
drop = 'default:junglegrass',
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3},
},
buildable_to = true,
})
if JUNGLEGRASS_SPAWNING == true then -- see settings.txt
plantslib:spawn_on_surfaces({
spawn_delay = SPAWN_DELAY,
spawn_plants = {"dryplants:junglegrass_shortest"},
avoid_radius = 4,
spawn_chance = SPAWN_CHANCE,
spawn_surfaces = {"default:dirt_with_grass", "default:cactus", "default:papyrus"},
avoid_nodes = {"group:junglegrass", "default:junglegrass", "default:dry_shrub"},
seed_diff = junglegrass_seed_diff,
light_min = 5
})
plantslib:spawn_on_surfaces({
spawn_delay = SPAWN_DELAY,
spawn_plants = {"dryplants:junglegrass_shortest"},
avoid_radius = 4,
spawn_chance = SPAWN_CHANCE*2,
spawn_surfaces = {"default:sand"},
avoid_nodes = {"group:junglegrass", "default:junglegrass", "default:dry_shrub"},
seed_diff = junglegrass_seed_diff,
light_min = 5
})
plantslib:spawn_on_surfaces({
spawn_delay = SPAWN_DELAY,
spawn_plants = {"dryplants:junglegrass_shortest"},
avoid_radius = 4,
spawn_chance = SPAWN_CHANCE*5,
spawn_surfaces = {"default:desert_sand"},
avoid_nodes = {"group:junglegrass", "default:junglegrass", "default:dry_shrub"},
seed_diff = junglegrass_seed_diff,
light_min = 5
})
end
abstract_dryplants.junglegrass = function(pos)
for i in pairs(grasses_list) do
local SiZe = math.random(1,4)
local GRaSS = grasses_list[i][1]
local NR = grasses_list[i][3]
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
local node_here = minetest.get_node(right_here)
if minetest.registered_nodes[node_here.name].buildable_to -- instead of check_air = true,
and SiZe == NR
and NR ~= 4 then
minetest.add_node(right_here, {name=GRaSS})
end
end
end
plantslib:register_generate_plant({
surface = {
"default:dirt_with_grass",
"default:sand",
"default:desert_sand"
},
max_count = JUNGLEGRASS_PER_MAPBLOCK,
rarity = 101 - JUNGLEGRASS_RARITY,
seed_diff = junglegrass_seed_diff,
min_elevation = 1, -- above sea level
max_elevation = 40,
near_nodes = {"default:jungletree", "default:junglegrass"},
near_nodes_size = 3,
near_nodes_vertical = 2,
near_nodes_count = 1,
plantlife_limit = -0.9,
check_air = false,
},
"abstract_dryplants.junglegrass"
)
-- add junglegrass on cacti?
-- todo: farming
for i in ipairs(grasses_list) do
plantslib:grow_plants({
grow_delay = GROW_DELAY,
grow_chance = GROW_CHANCE/2,
grow_plant = grasses_list[i][1],
grow_result = grasses_list[i][2],
dry_early_node = "default:desert_sand",
grow_nodes = {"default:dirt_with_grass", "default:sand", "default:desert_sand"}
})
end
print("[Junglegrass] Loaded.")