local lilypad_def = { description = "Lily Pad", drawtype = "nodebox", tiles = { "flowers_lily_pad.png" }, inventory_image = "flowers_lily_pad.png", wield_image = "flowers_lily_pad.png", 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 node = minetest.get_node(pointed_thing.under) local def = minetest.registered_nodes[node.name] if def and def.on_rightclick then return def.on_rightclick(pointed_thing.under, node, placer, itemstack, pointed_thing) end if def and 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, "Node is protected") minetest.record_protection_violation(pos, player_name) 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) if biome_lib then local grow_lily_pad = function(pos) minetest.swap_node( {x=pos.x, y=pos.y+1, z=pos.z}, { name="nalc_flowers:lily_pad_waving", param2=math.random(0,3) } ) end biome_lib:register_generate_plant({ surface = {"default:water_source"}, max_count = 320, rarity = 33, min_elevation = 1, max_elevation = 40, near_nodes = {"default:dirt_with_grass", "default:dry_dirt_with_dry_grass", "default:jungletree"}, near_nodes_size = 4, near_nodes_vertical = 1, near_nodes_count = 1, plantlife_limit = -0.9, temp_max = -0.22, 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 minetest.register_alias("flowers:lily_pad", "nalc_flowers:lily_pad") minetest.register_alias("nalc:lily_pad", "nalc_flowers:lily_pad") minetest.log("action", "[nalc_flowers] loaded.")