-- Translation support local S = minetest.get_translator("algae") -- -- Algae -- -----Load documentation via doc_helper------------------------ local MP = minetest.get_modpath(minetest.get_current_modname()) local docpath = MP .. DIR_DELIM .. "doc" doc.add_category("algae", { name = S("_Algae_"), description = S("Algae Mod Documentation"), build_formspec = doc.entry_builders.text_and_square_gallery, }) doc.build_entries(docpath, "algae") ------Registrations-------- local algae_thin_def = { description = S("Thin algae"), drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", tiles = {"algae_thin_1.png", "algae_thin_1.png"}, inventory_image = "algae_thin_1.png", wield_image = "algae_thin_1.png", --use_texture_alpha = true, liquids_pointable = true, walkable = false, buildable_to = true, floodable = true, groups = {snappy = 3, flower = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), node_placement_prediction = "", node_box = { type = "fixed", fixed = {-0.5, -31 / 64, -0.5, 0.5, -15 / 32, 0.5} }, selection_box = { type = "fixed", fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, -15 / 32, 7 / 16} }, 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 = "algae:algae_thin", 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 return itemstack end } local algae_medium_def = { description = S("Medium algae"), drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", tiles = {"algae_medium_1.png", "algae_medium_1.png"}, inventory_image = "algae_medium_1.png", wield_image = "algae_medium_1.png", --use_texture_alpha = true, liquids_pointable = true, walkable = false, buildable_to = true, floodable = true, groups = {snappy = 3, flower = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), node_placement_prediction = "", node_box = { type = "fixed", fixed = {-0.5, -31 / 64, -0.5, 0.5, -15 / 32, 0.5} }, selection_box = { type = "fixed", fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, -15 / 32, 7 / 16} }, 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 = "algae:algae_medium", 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 return itemstack end } local algae_thick_def = { description = S("Thick algae"), drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", tiles = {"algae_thick_1.png", "algae_thick_1.png"}, inventory_image = "algae_thick_1.png", wield_image = "algae_thick_1.png", --use_texture_alpha = true, liquids_pointable = true, walkable = false, buildable_to = true, floodable = true, groups = {snappy = 3, flower = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), node_placement_prediction = "", node_box = { type = "fixed", fixed = {-0.5, -31 / 64, -0.5, 0.5, -15 / 32, 0.5} }, selection_box = { type = "fixed", fixed = {-7 / 16, -0.5, -7 / 16, 7 / 16, -15 / 32, 7 / 16} }, on_place = function(itemstack, placer, pointed_thing) if placer == nil then minetest.log("decorations have no placer") end 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 = "algae:algae_thick", 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 return itemstack end } minetest.register_node("algae:algae_thin", algae_thin_def) minetest.register_node("algae:algae_medium", algae_medium_def) minetest.register_node("algae:algae_thick", algae_thick_def) --- --- Mapgen for algae --- minetest.register_biome({ name = "deciduous_forest_oceansurface", y_max = 5, y_min = -5, heat_point = 60, humidity_point = 68, }) minetest.register_decoration({ name = "algae_thick1", deco_type = "simple", place_on = {"default:dirt"}, spawn_by = {"default:dirt_with_grass"}, num_spawn_by = 3, sidelen = 8, fill_ratio = 0.7, biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"}, y_max = 0, y_min = 0, decoration = "algae:algae_thick", param2 = 0, param2_max = 3, place_offset_y = 1, }) minetest.register_decoration({ name = "algae_thick_rainforest", deco_type = "simple", place_on = {"default:water_source"}, spawn_by = {"default:papyrus"}, num_spawn_by = 3, sidelen = 16, fill_ratio = 0.7, biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"}, y_max = 1, y_min = 1, decoration = "algae:algae_thick", param2 = 0, param2_max = 3, place_offset_y = 0, flags = "liquid_surface", }) minetest.register_decoration({ name = "algae_medium", deco_type = "simple", place_on = {"default:water_source"}, sidelen = 16, fill_ratio = 2, spawn_by = {"algae:algae_thick"}, num_spawn_by = 1, y_max = 1, y_min = 1, param2 = 0, param2_max = 3, decoration = "algae:algae_medium", flags = "liquid_surface", }) minetest.register_decoration({ name = "algae_thick2", deco_type = "simple", place_on = {"default:water_source"}, sidelen = 16, fill_ratio = 0.7, spawn_by = {"algae:algae_medium"}, num_spawn_by = 2, y_max = 1, y_min = 1, param2 = 0, param2_max = 3, decoration = "algae:algae_thick", flags = "liquid_surface", }) minetest.register_decoration({ name = "algae_thin", deco_type = "simple", place_on = {"default:water_source"}, sidelen = 16, fill_ratio = 3, spawn_by = {"algae:algae_medium"}, num_spawn_by = 1, y_max = 1, y_min = 1, param2 = 0, param2_max = 3, decoration = "algae:algae_thin", flags = "liquid_surface", }) minetest.register_decoration({ name = "algae_thin2", deco_type = "simple", place_on = {"default:water_source"}, sidelen = 16, fill_ratio = 3, spawn_by = {"algae:algae_thick"}, num_spawn_by = 1, y_max = 1, y_min = 1, param2 = 0, param2_max = 3, decoration = "algae:algae_thin", flags = "liquid_surface", })