[nalc_flowers] Réécriture du mod et supprime la dépendance biome_lib

Les nénuphars custom ont 1/5 chance de se régénérer toute les
600 secondes près d'un bloc de jungletree.
This commit is contained in:
Sys Quatre 2020-06-13 22:16:45 +02:00
parent 1c245fd260
commit 117ae0933a
3 changed files with 60 additions and 89 deletions

View File

@ -1,2 +1,2 @@
default default
biome_lib? flowers

View File

@ -1,29 +1,9 @@
local lilypad_def = { local lilypad_def = table.copy(minetest.registered_nodes["flowers:waterlily"])
description = "Lily Pad", lilypad_def.description = "Lily Pad"
drawtype = "nodebox", lilypad_def.tiles = {"flowers_lily_pad.png"}
tiles = { "flowers_lily_pad.png" }, lilypad_def.inventory_image = "flowers_lily_pad.png"
inventory_image = "flowers_lily_pad.png", lilypad_def.wield_image = "flowers_lily_pad.png"
wield_image = "flowers_lily_pad.png", lilypad_def.on_place = function(itemstack, placer, pointed_thing)
wield_scale = {x = 1, y = 1, z = 0.001},
sunlight_propagates = true,
paramtype = "light",
paramtype2 = "facedir",
liquids_pointable = true,
walkable = false,
buildable_to = true,
floodable = true,
groups = {snappy = 3, flammable = 1, flower = 1},
sounds = default.node_sound_leaves_defaults(),
node_placement_prediction = "",
node_box = {
type = "fixed",
fixed = {-0.5, -0.45, -0.5, 0.5, -0.4375, 0.5},
},
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
},
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.above local pos = pointed_thing.above
local node = minetest.get_node(pointed_thing.under) local node = minetest.get_node(pointed_thing.under)
local def = minetest.registered_nodes[node.name] local def = minetest.registered_nodes[node.name]
@ -51,8 +31,7 @@ local lilypad_def = {
end end
return itemstack return itemstack
end end
}
local lilypad_waving_def = table.copy(lilypad_def) local lilypad_waving_def = table.copy(lilypad_def)
lilypad_waving_def.waving = 3 lilypad_waving_def.waving = 3
@ -62,69 +41,58 @@ lilypad_waving_def.groups.not_in_creative_inventory = 1
minetest.register_node("nalc_flowers:lily_pad", lilypad_def) minetest.register_node("nalc_flowers:lily_pad", lilypad_def)
minetest.register_node("nalc_flowers:lily_pad_waving", lilypad_waving_def) minetest.register_node("nalc_flowers:lily_pad_waving", lilypad_waving_def)
if biome_lib then local function lily_pad_spread(pos, node)
local grow_lily_pad = function(pos) if minetest.get_node_light(pos, nil) < 9 then
minetest.swap_node( return
{x=pos.x, y=pos.y+1, z=pos.z},
{
name="nalc_flowers:lily_pad_waving",
param2=math.random(0,3)
}
)
end end
biome_lib:register_generate_plant({ local positions = minetest.find_nodes_in_area_under_air(
surface = {"default:water_source"}, {x = pos.x - 1, y = pos.y-1, z = pos.z - 1},
max_count = 320, {x = pos.x + 1, y = pos.y-1, z = pos.z + 1},
rarity = 33, {"default:water_source"})
min_elevation = 1,
max_elevation = 40, if #positions == 0 then return end
near_nodes = {"default:dirt_with_grass", "default:dry_dirt_with_dry_grass", "default:jungletree"},
near_nodes_size = 4, local pos2 = positions[math.random(#positions)]
near_nodes_vertical = 1, pos2.y = pos2.y+1
near_nodes_count = 1, if minetest.get_node_light(pos2, nil) >= 9 then
plantlife_limit = -0.9, minetest.set_node(pos2, {name = node.name})
temp_max = -0.22, end
temp_min = 0.22,
},
grow_lily_pad
)
-- spawn ABM registration
biome_lib:spawn_on_surfaces({
spawn_delay = 500,
spawn_plants = {"nalc_flowers:lily_pad_waving"},
avoid_radius = 2.5,
spawn_chance = 800,
spawn_surfaces = {"default:water_source"},
avoid_nodes = {"group:flower", "group:flora"},
seed_diff = 330,
light_min = 9,
depth_max = 2,
random_facedir = {0,3},
})
else
minetest.register_decoration({
name = "nalc_flowers:lily_pad",
deco_type = "simple",
place_on = {"default:dirt"},
sidelen = 16,
noise_params = {
offset = -0.12,
scale = 0.3,
spread = {x=200, y=200, z=200},
seed = 34,
octaves = 3,
persist = 0.7
},
biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"},
y_min = 0,
y_max = 0,
decoration = "nalc_flowers:lily_pad_waving",
param2 = 0,
param2_max = 3,
place_offset_y = 1,
})
end end
-- spawn ABM registration
minetest.register_abm({
label = "Lilypad spread",
nodenames = {"nalc_flowers:lily_pad_waving"},
neighbors = {"default:jungletree"},
interval = 600,
chance = 5,
action = function(...)
lily_pad_spread(...)
end,
})
minetest.register_decoration({
name = "nalc_flowers:lily_pad",
deco_type = "simple",
place_on = {"default:dirt"},
sidelen = 16,
noise_params = {
offset = -0.12,
scale = 0.3,
spread = {x=200, y=200, z=200},
seed = 34,
octaves = 3,
persist = 0.7
},
biomes = {"rainforest_swamp"},
y_min = 0,
y_max = 0,
decoration = "nalc_flowers:lily_pad_waving",
param2 = 0,
param2_max = 3,
place_offset_y = 1,
})
minetest.register_alias("flowers:lily_pad", "nalc_flowers:lily_pad") minetest.register_alias("flowers:lily_pad", "nalc_flowers:lily_pad")
minetest.register_alias("nalc:lily_pad", "nalc_flowers:lily_pad") minetest.register_alias("nalc:lily_pad", "nalc_flowers:lily_pad")

3
nalc_flowers/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = nalc_flowers
description = NALC mod: nalc_flowers
depends = default,flowers