local S = minetest.get_translator("nalc_flowers") local lilypad_def = table.copy(minetest.registered_nodes["flowers:waterlily"]) lilypad_def.description = S("Lily Pad") lilypad_def.tiles = {"flowers_lily_pad.png"} lilypad_def.inventory_image = "flowers_lily_pad.png" lilypad_def.wield_image = "flowers_lily_pad.png" lilypad_def.on_place = function(itemstack, placer, pointed_thing) local pos = pointed_thing.above local node = minetest.get_node(pointed_thing.under) local def = minetest.registered_nodes[node.name] if def then if def.on_rightclick then def.on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) elseif def.liquidtype == "source" and minetest.get_item_group(node.name, "water") > 0 then local player_name = placer and placer:get_player_name() or "" if not minetest.is_protected(pos, player_name) then minetest.set_node( pos, { name = "nalc_flowers:lily_pad" ..(def.waving == 3 and "_waving" or ""), param2 = math.random(0, 3) }) if not (creative and creative.is_enabled_for and creative.is_enabled_for(player_name)) then itemstack:take_item() end else minetest.chat_send_player(player_name, S("Node is protected")) minetest.record_protection_violation(pos, player_name) end end end return itemstack end local lilypad_waving_def = table.copy(lilypad_def) lilypad_waving_def.waving = 3 lilypad_waving_def.drop = "nalc_flowers:lily_pad" 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_waving", lilypad_waving_def) local function lily_pad_spread(pos, node) if minetest.get_node_light(pos, nil) < 9 then return end local positions = minetest.find_nodes_in_area_under_air( {x = pos.x - 1, y = pos.y-1, z = pos.z - 1}, {x = pos.x + 1, y = pos.y-1, z = pos.z + 1}, {"default:water_source"}) if #positions == 0 then return end local pos2 = positions[math.random(#positions)] pos2.y = pos2.y+1 if minetest.get_node_light(pos2, nil) >= 9 then minetest.set_node(pos2, {name = node.name}) 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("nalc:lily_pad", "nalc_flowers:lily_pad") -- Correction d'alias minetest.register_alias("mushroom:poison", "flowers:mushroom_red") minetest.log("action", "[nalc_flowers] loaded.")