commit 121ca5b70f0d0a106f2044ce5fc09290a65d3e5a Author: Skandarella <75903112+Skandarella@users.noreply.github.com> Date: Sun Dec 18 20:05:59 2022 +0100 Add files via upload diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e810afb --- /dev/null +++ b/LICENSE @@ -0,0 +1,27 @@ +MIT License + +Copyright (c) 2022 Skandarella + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + + +Modified Code by Liil/Wilhelmine/Skandarella (c) 2022 +Textures and Schematics by Liil/Wilhelmine/Skandarella under (MIT) License (c) 2022 diff --git a/coralnodes.lua b/coralnodes.lua new file mode 100644 index 0000000..1468148 --- /dev/null +++ b/coralnodes.lua @@ -0,0 +1,106 @@ +minetest.register_node("marinara:hardcoral_brown", { + description = ("Brown Hard Coral"), + tiles = {"marinara_hardcoral_brown.png"}, + groups = {cracky = 3, stone = 1}, + light_source = 2, + drop = "marinara:hardcoral_brown", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:hardcoral", { + description = ("Hard Coral"), + tiles = {"marinara_hardcoral.png"}, + groups = {cracky = 3, stone = 1}, + light_source = 2, + drop = "marinara:hardcoral", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:hardcoral_blue", { + description = ("Blue Hard Coral"), + tiles = {"marinara_hardcoral_blue.png"}, + groups = {cracky = 3, stone = 1}, + drop = "marinara:hardcoral_blue", + light_source = 2, + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:hardcoral_green", { + description = ("Green Hard Coral"), + tiles = {"marinara_hardcoral_green.png"}, + groups = {cracky = 3, stone = 1}, + light_source = 2, + drop = "marinara:hardcoral_green", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:hardcoral_pink", { + description = ("Pink Hard Coral"), + tiles = {"marinara_hardcoral_pink.png"}, + groups = {cracky = 3, stone = 1}, + light_source = 2, + drop = "marinara:hardcoral_pink", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:hardcoral_red", { + description = ("Red Hard Coral"), + tiles = {"marinara_hardcoral_red.png"}, + groups = {cracky = 3, stone = 1}, + light_source = 2, + drop = "marinara:hardcoral_red", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:hardcoral_violet", { + description = ("Violet Hard Coral"), + tiles = {"marinara_hardcoral_violet.png"}, + groups = {cracky = 3, stone = 1}, + light_source = 2, + drop = "marinara:hardcoral_violet", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:hardcoral_yellow", { + description = ("Yellow Hard Coral"), + tiles = {"marinara_hardcoral_yellow.png"}, + groups = {cracky = 3, stone = 1}, + light_source = 2, + drop = "marinara:hardcoral_yellow", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:coastrock", { + description = ("Coastal Rock"), + tiles = {"marinara_coastrock.png"}, + groups = {cracky = 3, stone = 1}, + drop = "marinara:coastrock", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:coastrock_alage", { + description = ("Coastal Rock with Alage"), + tiles = {"marinara_coastrock_alage.png"}, + groups = {cracky = 3, stone = 1}, + drop = "marinara:coastrock_alage", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("marinara:seapocks", { + description = ("Sea Pocks"), + tiles = {"marinara_seapocks.png"}, + groups = {cracky = 3, stone = 1}, + drop = "marinara:seapocks", + legacy_mineral = true, + sounds = default.node_sound_stone_defaults(), +}) \ No newline at end of file diff --git a/crafting.lua b/crafting.lua new file mode 100644 index 0000000..df04201 --- /dev/null +++ b/crafting.lua @@ -0,0 +1,217 @@ + stairs.register_stair_and_slab( + "marinara_reed_node", + "marinara:reed_bundle", + {snappy = 3, oddly_breakable_by_hand = 0, flammable = 0}, + {"marinara_reed_node_top.png", "marinara_reed_node.png", "marinara_reed_node_top.png"}, + ("Reed Node Stair"), + ("Reed Node Slab"), + default.node_sound_leaves_defaults() + ) + +minetest.register_node("marinara:reed_bundle", { + description = ("Reed Node"), + tiles = { + "marinara_reed_node.png", + "marinara_reed_node.png", + "marinara_reed_node_top.png" + }, + is_ground_content = false, + groups = {snappy = 3, flammable = 2}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft({ + output = "marinara:reed_bundle", + type = "shapeless", + recipe = + {"marinara:reed", "marinara:reed", "marinara:reed", "marinara:reed"} + +}) + +minetest.register_craft({ + output = "marinara:reed_bundle", + type = "shapeless", + recipe = + {"marinara:reed_root", "marinara:reed_root", "marinara:reed_root", "marinara:reed_root"} + +}) + +minetest.register_node("marinara:bountychest", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:steel_ingot 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest2", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "tnt:gunpowder 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest3", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:axe_bronze 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest4", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "farming:seed_wheat 10", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest5", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:sword_steel 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest6", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:gold_ingot 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest7", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "farming:string 6", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest8", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:book 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest9", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:mese_crystal_fragment 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest10", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:pick_bronze 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest11", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "default:obsidian_shard 1", + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_node("marinara:bountychest12", { + description = ("Bounty Chest"), +tiles = { + "marinara_bootynode_top.png", + "marinara_bootynode_bottom.png", + "marinara_bootynode_right.png", + "marinara_bootynode_left.png", + "marinara_bootynode_back.png", + "marinara_bootynode_front.png" + }, +groups = {wood = 1, choppy = 2, flammable = 2}, + drop = "farming:seed_cotton 10", + sounds = default.node_sound_wood_defaults(), +}) \ No newline at end of file diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..08be96b --- /dev/null +++ b/depends.txt @@ -0,0 +1,4 @@ +default +stairs +tnt +farming \ No newline at end of file diff --git a/description.txt b/description.txt new file mode 100644 index 0000000..2df4670 --- /dev/null +++ b/description.txt @@ -0,0 +1 @@ +adds water structures and coral reefs to your minetest game world \ No newline at end of file diff --git a/hunger.lua b/hunger.lua new file mode 100644 index 0000000..5a66bd3 --- /dev/null +++ b/hunger.lua @@ -0,0 +1,8 @@ +if minetest.get_modpath("hunger_ng") ~= nil then + hunger_ng.add_hunger_data('marinara:raw_oisters', { + satiates = 2.0, + }) + hunger_ng.add_hunger_data('marinara:mussels_cooked', { + satiates = 5.0, +}) +end \ No newline at end of file diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..9c877b0 --- /dev/null +++ b/init.lua @@ -0,0 +1,43 @@ +--This creates the marinara object. +marinara = {} + +--This creates the marinara.settings object, and fills it with either the menu selected choices as defined in settingtypes.txt, or default values, (In this case, false). +marinara.settings = { + clear_biomes = minetest.settings:get_bool("marinara.clear_biomes") or false, + clear_decos = minetest.settings:get_bool("marinara.clear_decos") or false, + clear_ores = minetest.settings:get_bool("marinara.clear_ores") or false, +} + +if marinara.settings.clear_biomes then + minetest.clear_registered_biomes() +end +if marinara.settings.clear_decos then + minetest.clear_registered_decorations() +end +if marinara.settings.clear_ores then + minetest.clear_registered_ores() +end + +local modname = "marinara" +local modpath = minetest.get_modpath(modname) +local mg_name = minetest.get_mapgen_setting("mg_name") + +-- Load support for intllib. +local path = minetest.get_modpath(minetest.get_current_modname()) .. "/" + +local S = minetest.get_translator and minetest.get_translator("marinara") or + dofile(path .. "intllib.lua") + + + +-- plants +dofile(path .. "coralnodes.lua") -- +dofile(path .. "plants.lua") -- +dofile(path .. "reefstuff.lua") -- +dofile(path .. "crafting.lua") -- +dofile(path .. "spawn.lua") -- +dofile(path .. "hunger.lua") -- + + + +print (S("[MOD] Caves loaded")) diff --git a/intllib.lua b/intllib.lua new file mode 100644 index 0000000..adb0f88 --- /dev/null +++ b/intllib.lua @@ -0,0 +1,3 @@ +-- Support for the old multi-load method +dofile(minetest.get_modpath("intllib").."/init.lua") + diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..19e8002 --- /dev/null +++ b/mod.conf @@ -0,0 +1,2 @@ +name = marinara + diff --git a/plants.lua b/plants.lua new file mode 100644 index 0000000..e8bb895 --- /dev/null +++ b/plants.lua @@ -0,0 +1,415 @@ +minetest.register_node("marinara:reed_root", { + description = ("Reed Root"), + drawtype = "plantlike_rooted", + visual_scale = 3.5, + waving = 1, + paramtype = "light", + tiles = {"default_dirt.png"}, + special_tiles = {{name = "marinara_reed_root.png", tileable_vertical = true}}, + inventory_image = "marinara_reed_root.png", + wield_image = "marinara_reed_root.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "default:dirt", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "default:dirt"}) + end, +}) + +minetest.register_node("marinara:reed", { + description = ("Reed"), + drawtype = "plantlike", + waving = 1, + visual_scale = 3.5, + tiles = {"marinara_reed.png"}, + inventory_image = "marinara_reed.png", + wield_image = "marinara_reed.png", + paramtype = "light", + sunlight_propagates = true, + + walkable = false, + selection_box = { + type = "fixed", + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.5, 6 / 16}, + }, + groups = {snappy = 3, flammable = 2}, + sounds = default.node_sound_leaves_defaults(), + + after_dig_node = function(pos, node, metadata, digger) + default.dig_up(pos, node, digger) + end, +}) + +minetest.register_node("marinara:sand_with_kelp", { + description = ("Kelp"), + drawtype = "plantlike_rooted", + waving = 1, + tiles = {"default_sand.png"}, + special_tiles = {{name = "marinara_kelp.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_kelp_inv.png", + visual_scale = 2.0, + wield_image = "marinara_kelp_inv.png", + paramtype = "light", + paramtype2 = "leveled", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-2/16, 0.5, -2/16, 2/16, 3.5, 2/16}, + }, + }, + node_dig_prediction = "default:sand", + node_placement_prediction = "", + sounds = default.node_sound_sand_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + 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.under + if minetest.get_node(pos).name ~= "default:sand" then + return itemstack + end + + local height = math.random(4, 12) + 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 = "marinara:sand_with_kelp", + param2 = height * 8}) + if not minetest.is_creative_enabled(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, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "default:sand"}) + end +}) + +minetest.register_node("marinara:sand_with_seagrass2", { + description = ("Long Seagrass"), + drawtype = "plantlike_rooted", + waving = 1, + tiles = {"default_sand.png"}, + special_tiles = {{name = "marinara_seagrass.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_seagrass_inv.png", + visual_scale = 2.0, + wield_image = "marinara_seagrass_inv.png", + paramtype = "light", + paramtype2 = "leveled", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-2/16, 0.5, -2/16, 2/16, 1, 2/16}, + }, + }, + node_dig_prediction = "default:sand", + node_placement_prediction = "", + sounds = default.node_sound_sand_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + 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.under + if minetest.get_node(pos).name ~= "default:sand" then + return itemstack + end + + local height = math.random(2, 2) + 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 = "marinara:sand_with_seagrass2", + param2 = height * 8}) + if not minetest.is_creative_enabled(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, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "default:sand"}) + end +}) + +minetest.register_node("marinara:sand_with_seagrass", { + description = ("Seagrass"), + drawtype = "plantlike_rooted", + waving = 1, + tiles = {"default_sand.png"}, + special_tiles = {{name = "marinara_seagrass.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_seagrass_inv.png", + visual_scale = 2.0, + wield_image = "marinara_seagrass_inv.png", + paramtype = "light", + paramtype2 = "leveled", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-2/16, 0.5, -2/16, 2/16, 1, 2/16}, + }, + }, + node_dig_prediction = "default:sand", + node_placement_prediction = "", + sounds = default.node_sound_sand_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + 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.under + if minetest.get_node(pos).name ~= "default:sand" then + return itemstack + end + + local height = math.random(1, 1) + 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 = "marinara:sand_with_seagrass", + param2 = height * 8}) + if not minetest.is_creative_enabled(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, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "default:sand"}) + end +}) + +minetest.register_node("marinara:sand_with_alage", { + description = ("Alage"), + drawtype = "plantlike_rooted", + waving = 1, + tiles = {"default_sand.png"}, + special_tiles = {{name = "marinara_alage.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_alage_inv.png", + visual_scale = 1.0, + wield_image = "marinara_alage_inv.png", + paramtype = "light", + paramtype2 = "leveled", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-2/16, 0.5, -2/16, 2/16, 1, 2/16}, + }, + }, + node_dig_prediction = "default:sand", + node_placement_prediction = "", + sounds = default.node_sound_sand_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + 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.under + if minetest.get_node(pos).name ~= "default:sand" then + return itemstack + end + + local height = math.random(1, 1) + 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 = "marinara:sand_with_alage", + param2 = height * 16}) + if not minetest.is_creative_enabled(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, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "default:sand"}) + end +}) + +minetest.register_node("marinara:coastrock_with_brownalage", { + description = ("Brown Alage"), + drawtype = "plantlike_rooted", + waving = 1, + tiles = {"marinara_coastrock.png"}, + special_tiles = {{name = "marinara_brownalage.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_brownalage_inv.png", + visual_scale = 2.0, + wield_image = "marinara_brownalage_inv.png", + paramtype = "light", + paramtype2 = "leveled", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-2/16, 0.5, -2/16, 2/16, 1, 2/16}, + }, + }, + node_dig_prediction = "marinara:coastrock", + node_placement_prediction = "", + sounds = default.node_sound_sand_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + 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.under + if minetest.get_node(pos).name ~= "default:sand" then + return itemstack + end + + local height = math.random(2, 2) + 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 = "marinara:coastrock_with_brownalage", + param2 = height * 8}) + if not minetest.is_creative_enabled(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, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:coastrock"}) + end +}) diff --git a/reefstuff.lua b/reefstuff.lua new file mode 100644 index 0000000..9ae4dfc --- /dev/null +++ b/reefstuff.lua @@ -0,0 +1,509 @@ +-- soft corals + +minetest.register_node("marinara:softcoral_yellow", { + description = ("Yellow Soft Coral"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 2.0, + paramtype = "light", + tiles = {"marinara_hardcoral.png"}, +special_tiles = {{name = "marinara_softcoral_yellow.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_softcoral_yellow_inv.png", + wield_image = "marinara_softcoral_yellow_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:hardcoral", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:hardcoral"}) + end, +}) + +minetest.register_node("marinara:softcoral_white", { + description = ("White Soft Coral"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 2.0, + paramtype = "light", + tiles = {"marinara_hardcoral.png"}, +special_tiles = {{name = "marinara_softcoral_white.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_softcoral_white_inv.png", + wield_image = "marinara_softcoral_white_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:hardcoral", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:hardcoral"}) + end, +}) + +minetest.register_node("marinara:softcoral_red", { + description = ("Red Soft Coral"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 2.0, + paramtype = "light", + tiles = {"marinara_hardcoral.png"}, +special_tiles = {{name = "marinara_softcoral_red.png", tileable_vertical = true, waving = 1}}, + inventory_image = "marinara_softcoral_red.png", + wield_image = "marinara_softcoral_red.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:hardcoral", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:hardcoral"}) + end, +}) + +minetest.register_node("marinara:softcoral_green", { + description = ("Green Soft Coral"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_hardcoral.png"}, +special_tiles = {{name = "marinara_softcoral_green.png", tileable_vertical = true, waving = 1}}, + inventory_image = "marinara_softcoral_green.png", + wield_image = "marinara_softcoral_green.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:hardcoral", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:hardcoral"}) + end, +}) + +minetest.register_node("marinara:softcoral", { + description = ("Soft Coral"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_hardcoral.png"}, +special_tiles = {{name = "marinara_softcoral.png", tileable_vertical = true, waving = 1}}, + inventory_image = "marinara_softcoral.png", + wield_image = "marinara_softcoral_green.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:hardcoral", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:hardcoral"}) + end, +}) + +minetest.register_node("marinara:softcoral_brown", { + description = ("Brown Soft Coral"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 2.0, + paramtype = "light", + tiles = {"marinara_hardcoral.png"}, +special_tiles = {{name = "marinara_softcoral_brown.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 2}}}, + inventory_image = "marinara_softcoral_brown_inv.png", + wield_image = "marinara_softcoral_brown_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:hardcoral", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:hardcoral"}) + end, +}) + +--- sea anemones + +minetest.register_node("marinara:seaanemone_tentacle", { + description = ("Sea Anemone"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_coastrock.png"}, +special_tiles = {{name = "marinara_seaanemone_tentacle.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 3}}}, + inventory_image = "marinara_seaanemone_tentacle_inv.png", + wield_image = "marinara_seaanemone_tentacle_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:coastrock", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:coastrock"}) + end, +}) + +minetest.register_node("marinara:seaanemone_tentacle2", { + description = ("Sea Anemone"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_coastrock.png"}, +special_tiles = {{name = "marinara_seaanemone_tentacle2.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 3}}}, + inventory_image = "marinara_seaanemone_tentacle2_inv.png", + wield_image = "marinara_seaanemone_tentacle2_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:coastrock", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:coastrock"}) + end, +}) + +minetest.register_node("marinara:seaanemone_tentacle3", { + description = ("Sea Anemone"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_coastrock.png"}, +special_tiles = {{name = "marinara_seaanemone_tentacle3.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 3}}}, + inventory_image = "marinara_seaanemone_tentacle3_inv.png", + wield_image = "marinara_seaanemone_tentacle3_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:coastrock", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:coastrock"}) + end, +}) + +minetest.register_node("marinara:seaanemone_tentacle4", { + description = ("Sea Anemone"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_coastrock.png"}, +special_tiles = {{name = "marinara_seaanemone_tentacle4.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 3}}}, + inventory_image = "marinara_seaanemone_tentacle4_inv.png", + wield_image = "marinara_seaanemone_tentacle4_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:coastrock", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:coastrock"}) + end, +}) + +--- fan worms + +minetest.register_node("marinara:seaworm", { + description = ("Sea Worm"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_seapocks.png"}, +special_tiles = {{name = "marinara_seaworm.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 3}}}, + inventory_image = "marinara_seaworm_inv.png", + wield_image = "marinara_seaworm_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:seapocks", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:seapocks"}) + end, +}) + +minetest.register_node("marinara:seaworm2", { + description = ("Sea Worm"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 1.0, + paramtype = "light", + tiles = {"marinara_seapocks.png"}, +special_tiles = {{name = "marinara_seaworm2.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 3}}}, + inventory_image = "marinara_seaworm2_inv.png", + wield_image = "marinara_seaworm2_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:seapocks", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:seapocks"}) + end, +}) + +minetest.register_node("marinara:seaworm3", { + description = ("Sea Worm"), + drawtype = "plantlike_rooted", + waving = 1, + visual_scale = 2.0, + paramtype = "light", + tiles = {"marinara_seapocks.png"}, +special_tiles = {{name = "marinara_seaworm3.png", tileable_vertical = true, waving = 1, animation = {type="vertical_frames", length = 12}}}, + inventory_image = "marinara_seaworm3_inv.png", + wield_image = "marinara_seaworm3_inv.png", + groups = {snappy = 3}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:seapocks", + node_placement_prediction = "", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:seapocks"}) + end, +}) + +-- mussels and oisters + +minetest.register_node("marinara:mussels", { + description = ("Mussel Node"), +tiles = { + { + name = "marinara_mussles.png", + animation = {type="vertical_frames", length = 4} + } + }, +inventory_image = "marinara_mussles_inv.png", + wield_image = "marinara_mussles_inv.png", + groups = {cracky = 2}, + drop = "marinara:mussels", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + type = "cooking", + output = "marinara:mussels_cooked", + recipe = "marinara:mussels", + cooktime = 5 +}) + +minetest.register_craftitem("marinara:mussels_cooked", { + description = ("Cooked Mussels"), + inventory_image = "marinara_mussles_cooked.png", + on_use = minetest.item_eat(8), + groups = {food_meat = 1, flammable = 2} +}) + +minetest.register_node("marinara:oisterbank", { + description = ("Oister Bank"), + drawtype = "plantlike_rooted", + waving = 0, + visual_scale = 2.0, + paramtype = "light", + tiles = {"marinara_seapocks.png"}, +special_tiles = {{name = "marinara_oisterbank.png", tileable_vertical = true}}, + inventory_image = "marinara_oisterbank.png", + wield_image = "marinara_oisterbank.png", + groups = {cracky = 2}, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16}, + }, + }, + node_dig_prediction = "marinara:seapocks", + node_placement_prediction = "", + drop = "marinara:raw_oisters", + sounds = default.node_sound_stone_defaults({ + dig = {name = "default_dig_snappy", gain = 0.2}, + dug = {name = "default_grass_footstep", gain = 0.25}, + }), + + on_place = coral_on_place, + + after_destruct = function(pos, oldnode) + minetest.set_node(pos, {name = "marinara:raw_oisters"}) + end, +}) + +minetest.register_node("marinara:raw_oisters", { + description = ("Raw Oisters"), + drawtype = "plantlike", + tiles = {"marinara_rawoisters.png"}, + inventory_image = "marinara_rawoisters.png", + wield_image = "marinara_rawoisters.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.31, -0.5, -0.31, 0.31, 0.5, 0.31} + }, + groups = {food = 1, flammable = 2, fleshy = 3, dig_immediate = 3}, + drop = "marinara:raw_oisters", + on_use = minetest.item_eat(6), + sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer) + if placer:is_player() then + minetest.set_node(pos, {name = "marinara:raw_oisters", param2 = 1}) + end + end +}) \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..3ec2c42 Binary files /dev/null and b/screenshot.png differ diff --git a/spawn.lua b/spawn.lua new file mode 100644 index 0000000..1ddaa6a --- /dev/null +++ b/spawn.lua @@ -0,0 +1,805 @@ +--- wrecks + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.00001, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -10, + y_min = -20, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_wreck.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.00001, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -10, + y_min = -20, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_wreck2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.00001, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -10, + y_min = -20, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_wreck3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.00001, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -10, + y_min = -20, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_wreckbounty.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.00001, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -10, + y_min = -20, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_wreckbounty2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.00001, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -10, + y_min = -20, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_wreckbounty3.mts", + rotation = "random", +}) + +--- cold oceans + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0009, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -1, + y_min = -4, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coast_rock.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0009, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -1, + y_min = -4, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coast_rock2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0009, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -1, + y_min = -4, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coast_rock3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0009, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -1, + y_min = -4, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coast_rock4.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0009, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -1, + y_min = -4, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coast_rock5.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0009, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -1, + y_min = -4, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coast_rock6.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0009, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -3, + y_min = -5, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coast_rock7.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -2, + y_min = -3, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_oister_bank.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -2, + y_min = -3, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_oister_bank2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"cold_desert_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -2, + y_min = -3, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_oister_bank3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -2, + y_min = -3, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_musslebank.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -2, + y_min = -3, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_musslebank2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -2, + y_min = -3, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_musslebank3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -5, + y_min = -10, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coldreef.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -5, + y_min = -10, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coldreef2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -5, + y_min = -10, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coldreef3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -5, + y_min = -10, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coldreef4.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -5, + y_min = -10, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coldreef5.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0007, + biomes = {"snowy_grassland_ocean", "coniferous_forest_ocean", "grassland_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -5, + y_min = -10, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coldreef6.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:sand"}, + place_offset_y = -1, + sidelen = 16, + noise_params = { + offset = -0.04, + scale = 0.2, + spread = {x = 300, y = 300, z = 300}, + seed = 87112, + octaves = 5, + persist = 0.9 + }, + biomes = { + "taiga_ocean", + "snowy_grassland_ocean", + "grassland_ocean", + "coniferous_forest_ocean", + "deciduous_forest_ocean", + "sandstone_desert_ocean", + "cold_desert_ocean"}, + y_max = -11, + y_min = -16, + flags = "force_placement", + decoration = "marinara:sand_with_kelp", + param2 = 48, + param2_max = 96, + }) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, +noise_params = { + offset = -0.04, + scale = 0.2, + spread = {x = 100, y = 100, z = 100}, + seed = 87112, + octaves = 7, + persist = 0.9 + }, + biomes = {"coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -3, + y_min = -8, + place_offset_y=0, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_seagrass.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, +noise_params = { + offset = -0.04, + scale = 0.2, + spread = {x = 100, y = 100, z = 100}, + seed = 87112, + octaves = 7, + persist = 0.9 + }, + biomes = {"coniferous_forest_ocean", "deciduous_forest_ocean", "grassland_ocean", "sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean", "tundra_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -4, + y_min = -8, + place_offset_y=0, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_seagrass_long.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, +noise_params = { + offset = -0.04, + scale = 0.2, + spread = {x = 100, y = 100, z = 100}, + seed = 87112, + octaves = 7, + persist = 0.9 + }, + biomes = {"deciduous_forest_ocean", "grassland_ocean", "coniferous_forest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -0, + y_min = -3, + place_offset_y=0, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_alage.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, +noise_params = { + offset = -0.04, + scale = 0.2, + spread = {x = 100, y = 100, z = 100}, + seed = 87112, + octaves = 7, + persist = 0.9 + }, + biomes = {"cold_desert_ocean", "coniferous_forest_ocean", "grassland_ocean", "tundra_ocean", "icesheet_ocean", "snowy_grassland_ocean",}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -1, + y_min = -5, + place_offset_y=0, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_brownalage.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, +noise_params = { + offset = -0.04, + scale = 0.2, + spread = {x = 100, y = 100, z = 100}, + seed = 87112, + octaves = 7, + persist = 0.9 + }, + biomes = {"deciduous_forest_ocean", "deciduous_forest_shore"}, + spawn_by = "default:water_source", + flags = "place_center_x,place_center_z,force_placement", + y_max = 1, + y_min = 0, + place_offset_y=0, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_reed.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:dirt"}, + sidelen = 16, +noise_params = { + offset = -0.04, + scale = 0.2, + spread = {x = 100, y = 100, z = 100}, + seed = 87112, + octaves = 7, + persist = 0.9 + }, + biomes = {"deciduous_forest_ocean", "deciduous_forest_shore"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -0, + y_min = -0, + place_offset_y=0, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_reed2.mts", + rotation = "random", +}) + +--- tropical oceans + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_blue.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_blue2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_blue3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_brown.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_brown2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_brown3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_green.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_green2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_green3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_pink.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_pink2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_pink3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_red.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_red2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_red3.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_yellow.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_yellow2.mts", + rotation = "random", +}) + +minetest.register_decoration({ + deco_type = "schematic", + place_on = {"default:sand"}, + sidelen = 16, + fill_ratio = 0.0003, + biomes = {"sandstone_desert_ocean", "savanna_ocean", "rainforest_ocean"}, + flags = "place_center_x,place_center_z,force_placement", + y_max = -6, + y_min = -12, + place_offset_y=-1, + schematic = minetest.get_modpath("marinara").."/schematics/marinara_coralreef_yellow3.mts", + rotation = "random", +})