flags = "place_center_x, place_center_z",
rotation = "random",
})
+
+ -- Kelp
+
+ minetest.register_decoration({
+ deco_type = "simple",
+ place_on = {"default:sand"},
+ place_offset_y = -1,
+ sidelen = 16,
+ noise_params = {
+ offset = -0.04,
+ scale = 0.1,
+ spread = {x = 200, y = 200, z = 200},
+ seed = 87112,
+ octaves = 3,
+ persist = 0.7
+ },
+ biomes = {
+ "taiga_ocean",
+ "snowy_grassland_ocean",
+ "grassland_ocean",
+ "coniferous_forest_ocean",
+ "deciduous_forest_ocean",
+ "sandstone_desert_ocean",
+ "cold_desert_ocean"},
+ y_min = -10,
+ y_max = -5,
+ flags = "force_placement",
+ decoration = "default:sand_with_kelp",
+ param2 = 48,
+ param2_max = 96,
+ })
end
default:acacia_bush_leaves
default:acacia_bush_sapling
+default:sand_with_kelp
+
Corals
------
end,
})
+minetest.register_node("default:sand_with_kelp", {
+ description = "Kelp On Sand",
+ drawtype = "plantlike_rooted",
+ tiles = {"default_sand.png"},
+ special_tiles = {{name = "default_kelp.png", tileable_vertical = true}},
+ inventory_image = "default_kelp.png",
+ paramtype2 = "leveled",
+ groups = {snappy = 3},
+ node_placement_prediction = "",
+
+ on_place = function(itemstack, placer, pointed_thing)
+ -- Call on_rightclick if the pointed node defines it
+ if pointed_thing.type == "node" and placer and
+ not placer:get_player_control().sneak then
+ local node_ptu = minetest.get_node(pointed_thing.under)
+ local def_ptu = minetest.registered_nodes[node_ptu.name]
+ if def_ptu and def_ptu.on_rightclick then
+ return def_ptu.on_rightclick(pointed_thing.under, node_ptu, placer,
+ itemstack, pointed_thing)
+ end
+ end
+
+ local pos = pointed_thing.above
+ local height = math.random(4, 6)
+ local pos_top = {x = pos.x, y = pos.y + height, z = pos.z}
+ local node_top = minetest.get_node(pos_top)
+ local def_top = minetest.registered_nodes[node_top.name]
+ local player_name = placer:get_player_name()
+
+ if def_top and def_top.liquidtype == "source" and
+ minetest.get_item_group(node_top.name, "water") > 0 then
+ if not minetest.is_protected(pos, player_name) and
+ not minetest.is_protected(pos_top, player_name) then
+ minetest.set_node(pos, {name = "default:sand_with_kelp",
+ param2 = height * 16})
+ 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
+})
+
--
-- Corals