--- /dev/null
+minetest.register_node("xocean:ocean_cobble", {\r
+ description = "Ocean Cobblestone",\r
+ tile_images = {"xocean_cobble.png"},\r
+ groups = {cracky=3},\r
+})\r
+\r
+minetest.register_node("xocean:ocean_stone", {\r
+ description = "Ocean Stone",\r
+ tile_images = {"xocean_stone.png"},\r
+ groups = {cracky=3},\r
+ drop= "xocean:ocean_cobble",\r
+})\r
+\r
+minetest.register_craft({\r
+ type = "cooking",\r
+ output = "xocean:ocean_stone",\r
+ recipe = "xocean:ocean_cobble",\r
+})\r
+---Spawn the stone\r
+minetest.register_ore({\r
+ ore_type = "blob",\r
+ ore = "xocean:ocean_stone",\r
+ wherein = {"default:sand"},\r
+ clust_scarcity = 32 * 32 * 32,\r
+ clust_size = 8,\r
+ y_min = -15,\r
+ y_max = 0,\r
+ noise_threshold = 0.0,\r
+ noise_params = {\r
+ offset = 0.5,\r
+ scale = 0.2,\r
+ spread = {x = 8, y = 5, z = 8},\r
+ seed = -316,\r
+ octaves = 1,\r
+ persist = 0.0\r
+ },\r
+ })\r
+\r
+minetest.register_node("xocean:ocean_carved", {\r
+ description = "Carved Ocean Stone",\r
+ tile_images = {"xocean_carved.png"},\r
+ groups = {cracky=2},\r
+})\r
+\r
+minetest.register_craft({\r
+ output = '"xocean:ocean_carved" 4',\r
+ recipe = {\r
+ {'xocean:ocean_stone', 'xocean:ocean_stone',},\r
+ {'xocean:ocean_stone', 'xocean:ocean_stone',},\r
+ },\r
+})\r
+\r
+minetest.register_node("xocean:ocean_circular", {\r
+ description = "Circular Ocean Stone",\r
+ tile_images = {"xocean_circular.png"},\r
+ groups = {cracky=2},\r
+})\r
+\r
+minetest.register_craft({\r
+ output = '"xocean:ocean_circular" 4',\r
+ recipe = {\r
+ {'xocean:ocean_craved', 'xocean:ocean_carved',},\r
+ {'xocean:ocean_craved', 'xocean:ocean_carved',},\r
+ },\r
+})\r
+\r
+minetest.register_node("xocean:ocean_pillar", {\r
+ description = "Ocean Pillar",\r
+ tile_images = {"xocean_pillar.png"},\r
+ groups = {cracky=2},\r
+})\r
+\r
+minetest.register_craft({\r
+ output = '"xocean:ocean_pillar" 4',\r
+ recipe = {\r
+ {'xocean:ocean_brick', 'xocean:ocean_brick',},\r
+ {'xocean:ocean_brick', 'xocean:ocean_brick',},\r
+ },\r
+})\r
+\r
+minetest.register_node("xocean:ocean_brick", {\r
+ description = "Ocean Brick",\r
+ tile_images = {"xocean_brick.png"},\r
+ groups = {cracky=2},\r
+})\r
+\r
+minetest.register_craft({\r
+ output = '"xocean:ocean_brick" 4',\r
+ recipe = {\r
+ {'xocean:ocean_cobble', 'xocean:ocean_cobble',},\r
+ {'xocean:ocean_cobble', 'xocean:ocean_cobble',},\r
+ },\r
+})\r
+\r
+minetest.register_node("xocean:sea_lantern", {\r
+ description = "Sea Lantern",\r
+ drawtype = "glasslike",\r
+ light_source = 30,\r
+ tiles = {"xocean_lantern.png"},\r
+ paramtype = "light",\r
+ is_ground_content = true,\r
+ sunlight_propagates = true,\r
+ sounds = default.node_sound_glass_defaults(),\r
+ groups = {cracky=3,oddly_breakable_by_hand=3},\r
+})\r
+\r
+minetest.register_craft({\r
+ output = '"xocean:sea_lantern" 4',\r
+ recipe = {\r
+ {'default:torch', 'default:glass', 'default:torch', },\r
+ {'default:glass', 'bucket:bucket_water', 'default:glass', },\r
+ {'default:torch', 'default:glass', 'default:torch', },\r
+ },\r
+ replacements = {{ "bucket:bucket_water", "bucket:bucket_empty"}}\r
+})\r
+---Sea stuff\r
+minetest.register_node("xocean:kelp_block", {\r
+ description = "Dried Kelp Block",\r
+ tile_images = {"xocean_kelp_block.png"},\r
+ groups = {snappy=3},\r
+ drop= "xocean:kelp 9",\r
+})\r
+minetest.register_craft({\r
+ output = '"xocean:kelp_block" 1',\r
+ recipe = {\r
+ {'xocean:kelp', 'xocean:kelp', 'xocean:kelp', },\r
+ {'xocean:kelp', 'xocean:kelp', 'xocean:kelp', },\r
+ {'xocean:kelp', 'xocean:kelp', 'xocean:kelp', },\r
+ },\r
+})\r
+minetest.override_item("default:sand_with_kelp", {\r
+ description = "Kelp",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ tiles = {"default_sand.png"},\r
+ special_tiles = {{name = "default_kelp.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_kelp.png",\r
+ wield_image = "xocean_kelp.png",\r
+ paramtype = "light",\r
+ paramtype2 = "leveled",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-2/16, 0.5, -2/16, 2/16, 3.5, 2/16},\r
+ },\r
+ },\r
+ node_dig_prediction = "default:sand",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_sand_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ -- Call on_rightclick if the pointed node defines it\r
+ if pointed_thing.type == "node" and placer and\r
+ not placer:get_player_control().sneak then\r
+ local node_ptu = minetest.get_node(pointed_thing.under)\r
+ local def_ptu = minetest.registered_nodes[node_ptu.name]\r
+ if def_ptu and def_ptu.on_rightclick then\r
+ return def_ptu.on_rightclick(pointed_thing.under, node_ptu, placer,\r
+ itemstack, pointed_thing)\r
+ end\r
+ end\r
+\r
+ local pos = pointed_thing.under\r
+ if minetest.get_node(pos).name ~= "default:sand" then\r
+ return itemstack\r
+ end\r
+\r
+ local height = math.random(4, 6)\r
+ local pos_top = {x = pos.x, y = pos.y + height, z = pos.z}\r
+ local node_top = minetest.get_node(pos_top)\r
+ local def_top = minetest.registered_nodes[node_top.name]\r
+ local player_name = placer:get_player_name()\r
+\r
+ if def_top and def_top.liquidtype == "source" and\r
+ minetest.get_item_group(node_top.name, "water") > 0 then\r
+ if not minetest.is_protected(pos, player_name) and\r
+ not minetest.is_protected(pos_top, player_name) then\r
+ minetest.set_node(pos, {name = "default:sand_with_kelp",\r
+ param2 = height * 16})\r
+ if not (creative and creative.is_enabled_for\r
+ and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+ else\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos, player_name)\r
+ end\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "default:sand"})\r
+ end\r
+})\r
+minetest.register_craft({\r
+ type = "cooking",\r
+ output = "xocean:kelp",\r
+ recipe = "default:sand_with_kelp",\r
+})\r
+minetest.register_craftitem("xocean:kelp", {\r
+ description = "Dried Kelp",\r
+ on_use = minetest.item_eat(2),\r
+ inventory_image = "xocean_dried_kelp.png",\r
+})\r
+minetest.register_node("xocean:seagrass", {\r
+ description = "Seagrass",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"default_sand.png"},\r
+ special_tiles = {{name = "xocean_grass.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_grass.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ drop = "",\r
+ node_dig_prediction = "default:sand",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "default:sand" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:seagrass"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "default:sand"})\r
+ end,\r
+})\r
+minetest.register_craftitem("xocean:fish_edible", {\r
+ description = "Tropical Fish",\r
+ on_use = minetest.item_eat(3),\r
+ inventory_image = "xocean_fish_edible.png",\r
+})\r
+minetest.register_node("xocean:pickle", {\r
+ description = "Sea Pickle",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"default_sand.png"},\r
+ special_tiles = {{name = "xocean_pickle.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_pickle.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ light_source = 3,\r
+ node_dig_prediction = "default:sand",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "default:sand" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:pickle"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "default:sand"})\r
+ end,\r
+})\r
+---Corals\r
+minetest.register_node("xocean:brain_block", {\r
+ description = "Brain Coral Block",\r
+ tiles = {"xocean_coral_brain.png"},\r
+ groups = {cracky = 3},\r
+ drop = "xocean:brain_skeleton",\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.override_item("default:coral_pink", {\r
+ description = "Brain Coral",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_brain.png"},\r
+ special_tiles = {{name = "xocean_brain.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_brain.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ node_dig_prediction = "xocean:brain_block",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:brain_block" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "default:coral_pink"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:brain_block"})\r
+ end,\r
+})\r
+minetest.register_node("xocean:brain_skeleton", {\r
+ description = "Brain Coral Skeleton",\r
+ tiles = {"xocean_coral_brain_skeleton.png"},\r
+ groups = {cracky = 3},\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.register_node("xocean:skeleton_brain", {\r
+ description = "Brain Coral Skeleton",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_brain_skeleton.png"},\r
+ special_tiles = {{name = "xocean_brain_skeleton.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_brain_skeleton.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ node_dig_prediction = "xocean:brain_skeleton",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:brain_skeleton" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:skeleton_brain"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:brain_skeleton"})\r
+ end,\r
+})\r
+minetest.register_node("xocean:tube_block", {\r
+ description = "Tube Coral Block",\r
+ tiles = {"xocean_coral_tube.png"},\r
+ groups = {cracky = 3},\r
+ drop = "xocean:tube_skeleton",\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.override_item("default:coral_cyan", {\r
+ description = "Tube Coral",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_tube.png"},\r
+ special_tiles = {{name = "xocean_tube.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_tube.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ drop = "xocean:tube_skeleton",\r
+ node_dig_prediction = "xocean:tube_block",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:tube_block" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "default:cyan_pink"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:tube_block"})\r
+ end,\r
+})\r
+minetest.register_node("xocean:tube_skeleton", {\r
+ description = "Tube Coral Skeleton",\r
+ tiles = {"xocean_coral_tube_skeleton.png"},\r
+ groups = {cracky = 3},\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.register_node("xocean:tube_bubble", {\r
+ description = "Tube Coral Skeleton",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_tube_skeleton.png"},\r
+ special_tiles = {{name = "xocean_tube_skeleton.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_tube_skeleton.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ node_dig_prediction = "xocean:tube_skeleton",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:tube_skeleton" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:skeleton_tube"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:tube_skeleton"})\r
+ end,\r
+})\r
+minetest.register_node("xocean:bubble_block", {\r
+ description = "Bubble Coral Block",\r
+ tiles = {"xocean_coral_bubble.png"},\r
+ groups = {cracky = 3},\r
+ drop = "xocean:bubble_skeleton",\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.register_node("xocean:bubble", {\r
+ description = "Bubble Coral",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_bubble.png"},\r
+ special_tiles = {{name = "xocean_bubble.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_bubble.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ node_dig_prediction = "xocean:bubble_block",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:bubble_block" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:bubble"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:bubble_block"})\r
+ end,\r
+})\r
+minetest.register_node("xocean:bubble_skeleton", {\r
+ description = "Bubble Coral Skeleton Block",\r
+ tiles = {"xocean_coral_bubble_skeleton.png"},\r
+ groups = {cracky = 3},\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.register_node("xocean:skeleton_bubble", {\r
+ description = "Bubble Coral Skeleton",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_bubble_skeleton.png"},\r
+ special_tiles = {{name = "xocean_bubble_skeleton.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_bubble_skeleton.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ drop = "xocean:skeleton_bubble",\r
+ node_dig_prediction = "xocean:bubble_skeleton",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:bubble_skeleton" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:skeleton_bubble"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:bubble_skeleton"})\r
+ end,\r
+})\r
+minetest.override_item("default:coral_brown", {\r
+ description = "Horn Coral Block",\r
+ tiles = {"xocean_coral_horn.png"},\r
+ groups = {cracky = 3},\r
+ drop = "default:coral_skeleton",\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.register_node("xocean:horn", {\r
+ description = "Horn Coral",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_horn.png"},\r
+ special_tiles = {{name = "xocean_horn.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_horn.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ node_dig_prediction = "xocean:horn_block",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:horn_block" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:horn"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:horn_block"})\r
+ end,\r
+})\r
+minetest.override_item("default:coral_skeleton", {\r
+ description = "Horn Coral Skeleton Block",\r
+ tiles = {"xocean_coral_horn_skeleton.png"},\r
+ groups = {cracky = 3},\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.register_node("xocean:skeleton_horn", {\r
+ description = "Horn Coral Skeleton",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_horn_skeleton.png"},\r
+ special_tiles = {{name = "xocean_horn_skeleton.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_horn_skeleton.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ drop = "xocean:skeleton:horn",\r
+ node_dig_prediction = "xocean:horn_skeleton",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:horn_skeleton" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:skeleton_horn"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:horn_skeleton"})\r
+ end,\r
+})\r
+minetest.register_node("xocean:fire", {\r
+ description = "Fire Coral",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_fire.png"},\r
+ special_tiles = {{name = "xocean_fire.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_fire.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ drop = "xocean:fire_skeleton",\r
+ node_dig_prediction = "xocean:fire_block",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:fire_block" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:fire"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:fire_block"})\r
+ end,\r
+})\r
+minetest.override_item("default:coral_orange", {\r
+ description = "Fire Coral Block",\r
+ tiles = {"xocean_coral_fire.png"},\r
+ groups = {cracky = 3},\r
+ drop = "xocean:fire_skeleton",\r
+ sounds = default.node_sound_stone_defaults(),\r
+})\r
+minetest.register_node("xocean:skeleton_fire", {\r
+ description = "Fire Coral Skeleton",\r
+ drawtype = "plantlike_rooted",\r
+ waving = 1,\r
+ paramtype = "light",\r
+ tiles = {"xocean_coral_fire_skeleton.png"},\r
+ special_tiles = {{name = "xocean_fire_skeleton.png", tileable_vertical = true}},\r
+ inventory_image = "xocean_fire_skeleton.png",\r
+ groups = {snappy = 3},\r
+ selection_box = {\r
+ type = "fixed",\r
+ fixed = {\r
+ {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
+ {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
+ },\r
+ },\r
+ node_dig_prediction = "xocean:fire_skeleton",\r
+ node_placement_prediction = "",\r
+ sounds = default.node_sound_stone_defaults({\r
+ dig = {name = "default_dig_snappy", gain = 0.2},\r
+ dug = {name = "default_grass_footstep", gain = 0.25},\r
+ }),\r
+\r
+ on_place = function(itemstack, placer, pointed_thing)\r
+ if pointed_thing.type ~= "node" or not placer then\r
+ return itemstack\r
+ end\r
+\r
+ local player_name = placer:get_player_name()\r
+ local pos_under = pointed_thing.under\r
+ local pos_above = pointed_thing.above\r
+\r
+ if minetest.get_node(pos_under).name ~= "xocean:fire_skeleton" or\r
+ minetest.get_node(pos_above).name ~= "default:water_source" then\r
+ return itemstack\r
+ end\r
+\r
+ if minetest.is_protected(pos_under, player_name) or\r
+ minetest.is_protected(pos_above, player_name) then\r
+ minetest.chat_send_player(player_name, "Node is protected")\r
+ minetest.record_protection_violation(pos_under, player_name)\r
+ return itemstack\r
+ end\r
+\r
+ minetest.set_node(pos_under, {name = "xocean:skeleton_fire"})\r
+ if not (creative and creative.is_enabled_for(player_name)) then\r
+ itemstack:take_item()\r
+ end\r
+\r
+ return itemstack\r
+ end,\r
+\r
+ after_destruct = function(pos, oldnode)\r
+ minetest.set_node(pos, {name = "xocean:fire_skeleton"})\r
+ end,\r
+})\r
+---Mapgen\r
+minetest.register_decoration({\r
+ name = "xocean:brain",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.0001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 20,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/brain.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:horn",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.0001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 20,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/horn.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:bubble",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.0001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 20,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/bubble.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:tube",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.0001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 20,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/tube.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:fire",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.0001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 20,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/fire.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:brain2",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 28,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/brain2.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:horn2",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 28,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/horn2.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:bubble2",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 28,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/bubble2.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:tube2",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 28,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/tube2.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:fire2",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 2,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 12,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/fire2.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:tube3",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 1 ,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.000001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 20,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/tube3.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:brain3",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 1,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.000001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 25,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -10,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/brain3.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+minetest.register_decoration({\r
+ name = "xocean:brain4",\r
+ deco_type = "schematic",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 1,\r
+ noise_params = {\r
+ offset = 0.0001,\r
+ scale = 0.0000001,\r
+ spread = {x = 100000, y = 100000, z = 100000},\r
+ seed = 87112,\r
+ octaves = 25,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -15,\r
+ y_min = -40,\r
+ flags = "force_placement",\r
+ schematic = "/schems/brain4.mts",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:seagrass",\r
+ deco_type = "simple",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 0.4,\r
+ spread = {x = 200, y = 200, z = 200},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:seagrass",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:fire_plant_dead",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:skeleton_fire",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:horn_plant_dead",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:skeleton_horn",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:bubble_plant_skeleton",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:skeleton_bubble",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:brain_plant_skeleton",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:skeleton_brain",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:tube_plant",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:skeleton_tube",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:fire_plant",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:fire",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:horn_plant",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:horn",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:bubble_plant",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:bubble",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:brain_plant",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "default:coral_pink",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:tube_plant",\r
+ deco_type = "simple",\r
+ place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 1.0,\r
+ spread = {x = 20, y = 20, z = 20},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -5,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "default:coral_cyan",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+ minetest.register_decoration({\r
+ name = "xocean:pickle",\r
+ deco_type = "simple",\r
+ place_on = {"default:sand"},\r
+ place_offset_y = -1,\r
+ sidelen = 16,\r
+ noise_params = {\r
+ offset = -0.04,\r
+ scale = 0.04,\r
+ spread = {x = 200, y = 200, z = 200},\r
+ seed = 87112,\r
+ octaves = 3,\r
+ persist = 0.7\r
+ },\r
+ biomes = {\r
+ "taiga_ocean",\r
+ "snowy_grassland_ocean",\r
+ "grassland_ocean",\r
+ "coniferous_forest_ocean",\r
+ "deciduous_forest_ocean",\r
+ "sandstone_desert_ocean",\r
+ "cold_desert_ocean"},\r
+ y_max = -8,\r
+ y_min = -50,\r
+ flags = "force_placement",\r
+ decoration = "xocean:pickle",\r
+ param2 = 48,\r
+ param2_max = 96,\r
+ })\r
+---Mobs\r
+if minetest.get_modpath("mobs") then\r
+local l_water_level = minetest.setting_get("water_level") - 2\r
+ mobs:register_mob("xocean:dolphin", {\r
+ type = "animal",\r
+ attack_type = "dogfight",\r
+ damage = 1,\r
+ visual_size = {x = 15, y = 15, z= 15},\r
+ reach = 3,\r
+ hp_min = 20,\r
+ hp_max = 20,\r
+ armor = 100,\r
+ collisionbox = {-0.75, -0.5, -0.75, 0.75, 0.5, 0.75},\r
+ visual = "mesh",\r
+ mesh = "dolphin.b3d",\r
+ textures = {\r
+ {"mobs_dolphin.png"}\r
+ },\r
+ drops = {\r
+ {name = "mobs:meat_raw", chance = 1, min = 2, max = 4},\r
+ },\r
+ makes_footstep_sound = false,\r
+ walk_velocity = 4,\r
+ run_velocity = 6,\r
+ fly = true,\r
+ fly_in = "default:water_source",\r
+ fall_speed = 0,\r
+ rotate = 90,\r
+ view_range = 30,\r
+ water_damage = 0,\r
+ lava_damage = 10,\r
+ light_damage = 0,\r
+ animation = {\r
+ speed_normal = 15,\r
+ speed_run = 25,\r
+ stand_start = 40,\r
+ stand_end = 100,\r
+ walk_start = 40,\r
+ walk_end = 100,\r
+ run_start = 40,\r
+ run_end = 100,\r
+ },\r
+ })\r
+ mobs:spawn_specific("xocean:dolphin", {"default:water_source"}, {"default:water_flowing","default:water_source"}, 5, 20, 30, 10000, 2, -31000, l_water_level)\r
+ mobs:register_egg("xocean:dolphin", "Dolphin", "xocean_stone.png", 1)\r
+ \r
+ mobs:register_mob("xocean:fish", {\r
+ type = "animal",\r
+ hp_min = 5,\r
+ hp_max = 5,\r
+ armor = 100,\r
+ visual_size = {x = 2, y = 2, z= 2},\r
+ collisionbox = {-0.25, -0.2, -0.25, 0.25, 0.2, 0.25},\r
+ visual = "mesh",\r
+ mesh = "fishy.b3d",\r
+ textures = {\r
+ {"mobs_fishy.png"},\r
+ {"mobs_fishy1.png"},\r
+ {"mobs_fishy2.png"},\r
+ {"mobs_fishy3.png"}\r
+ },\r
+ drops = {\r
+ {name = "xocean:fish_edible", chance = 1, min = 1, max = 1},\r
+ },\r
+ makes_footstep_sound = false,\r
+ walk_velocity = 2,\r
+ run_velocity = 3,\r
+ fly = true,\r
+ fly_in = "default:water_source",\r
+ fall_speed = 0,\r
+ view_range = 30,\r
+ water_damage = 0,\r
+ lava_damage = 10,\r
+ light_damage = 0,\r
+ animation = {\r
+ speed_normal = 15,\r
+ speed_run = 25,\r
+ stand_start = 40,\r
+ stand_end = 100,\r
+ walk_start = 40,\r
+ walk_end = 100,\r
+ run_start = 40,\r
+ run_end = 100,\r
+ },\r
+ })\r
+ mobs:spawn_specific("xocean:fish", {"default:water_source"}, {"default:water_flowing","default:water_source"}, 2, 20, 30, 10000, 5, -31000, l_water_level)\r
+ mobs:register_egg("xocean:fish", "Tropical Fish (Kob)", "xocean_fish.png", 0)\r
+mobs:register_mob("xocean:fish2", {\r
+ type = "animal",\r
+ hp_min = 5,\r
+ hp_max = 5,\r
+ armor = 100,\r
+ visual_size = {x = 2, y = 2, z= 2},\r
+ collisionbox = {-0.25, -0.2, -0.25, 0.25, 0.2, 0.25},\r
+ visual = "mesh",\r
+ mesh = "fishy.b3d",\r
+ textures = {\r
+ {"mobs_fishy4.png"},\r
+ {"mobs_fishy5.png"},\r
+ {"mobs_fishy6.png"}\r
+ },\r
+ drops = {\r
+ {name = "xocean:fish_edible", chance = 2, min = 1, max = 2},\r
+ },\r
+ makes_footstep_sound = false,\r
+ walk_velocity = 2,\r
+ run_velocity = 3,\r
+ fly = true,\r
+ fly_in = "default:water_source",\r
+ fall_speed = 0,\r
+ view_range = 30,\r
+ water_damage = 0,\r
+ lava_damage = 10,\r
+ light_damage = 0,\r
+ animation = {\r
+ speed_normal = 15,\r
+ speed_run = 25,\r
+ stand_start = 40,\r
+ stand_end = 100,\r
+ walk_start = 40,\r
+ walk_end = 100,\r
+ run_start = 40,\r
+ run_end = 100,\r
+ },\r
+ })\r
+ mobs:spawn_specific("xocean:fish2", {"default:water_source"}, {"default:water_flowing","default:water_source"}, 2, 20, 30, 10000, 5, -31000, l_water_level)\r
+ mobs:register_egg("xocean:fish2", "Tropical Fish (SunStreak)", "xocean_fish2.png", 0)\r
+mobs:register_mob("xocean:fish3", {\r
+ type = "animal",\r
+ hp_min = 5,\r
+ hp_max = 5,\r
+ armor = 100,\r
+ visual_size = {x = 2, y = 2, z= 2},\r
+ collisionbox = {-0.25, -0.2, -0.25, 0.25, 0.2, 0.25},\r
+ visual = "mesh",\r
+ mesh = "fishy.b3d",\r
+ textures = {\r
+ {"mobs_fishy7.png"},\r
+ {"mobs_fishy8.png"},\r
+ {"mobs_fishy9.png"}\r
+ },\r
+ drops = {\r
+ {name = "xocean:fish_edible", chance = 2, min = 1, max = 2},\r
+ },\r
+ makes_footstep_sound = false,\r
+ walk_velocity = 2,\r
+ run_velocity = 3,\r
+ fly = true,\r
+ fly_in = "default:water_source",\r
+ fall_speed = 0,\r
+ view_range = 30,\r
+ water_damage = 0,\r
+ lava_damage = 10,\r
+ light_damage = 0,\r
+ animation = {\r
+ speed_normal = 15,\r
+ speed_run = 25,\r
+ stand_start = 40,\r
+ stand_end = 100,\r
+ walk_start = 40,\r
+ walk_end = 100,\r
+ run_start = 40,\r
+ run_end = 100,\r
+ },\r
+ })\r
+ mobs:spawn_specific("xocean:fish3", {"default:water_source"}, {"default:water_flowing","default:water_source"}, 2, 20, 30, 10000, 5, -31000, l_water_level)\r
+ mobs:register_egg("xocean:fish3", "Tropical Fish (Dasher)", "xocean_fish3.png", 0)\r
+end
\ No newline at end of file