]> git.lizzy.rs Git - xocean.git/commitdiff
Add files via upload
authorstarninjas <36938375+starninjas@users.noreply.github.com>
Sat, 20 Apr 2019 21:02:35 +0000 (15:02 -0600)
committerGitHub <noreply@github.com>
Sat, 20 Apr 2019 21:02:35 +0000 (15:02 -0600)
70 files changed:
LICENSE.md [new file with mode: 0644]
README.md [new file with mode: 0644]
depends.txt [new file with mode: 0644]
init.lua [new file with mode: 0644]
models/dolphin.b3d [new file with mode: 0644]
models/fishy.b3d [new file with mode: 0644]
models/squid.b3d [new file with mode: 0644]
schems/brain.mts [new file with mode: 0644]
schems/brain2.mts [new file with mode: 0644]
schems/brain3.mts [new file with mode: 0644]
schems/brain4.mts [new file with mode: 0644]
schems/bubble.mts [new file with mode: 0644]
schems/bubble2.mts [new file with mode: 0644]
schems/fire.mts [new file with mode: 0644]
schems/fire2.mts [new file with mode: 0644]
schems/horn.mts [new file with mode: 0644]
schems/horn2.mts [new file with mode: 0644]
schems/sunken1.mts [new file with mode: 0644]
schems/sunken2.mts [new file with mode: 0644]
schems/sunken3.mts [new file with mode: 0644]
schems/tube.mts [new file with mode: 0644]
schems/tube2.mts [new file with mode: 0644]
schems/tube3.mts [new file with mode: 0644]
textures/mobs_dolphin.png [new file with mode: 0644]
textures/mobs_fishy.png [new file with mode: 0644]
textures/mobs_fishy1.png [new file with mode: 0644]
textures/mobs_fishy2.png [new file with mode: 0644]
textures/mobs_fishy3.png [new file with mode: 0644]
textures/mobs_fishy4.png [new file with mode: 0644]
textures/mobs_fishy5.png [new file with mode: 0644]
textures/mobs_fishy6.png [new file with mode: 0644]
textures/mobs_fishy7.png [new file with mode: 0644]
textures/mobs_fishy8.png [new file with mode: 0644]
textures/mobs_fishy9.png [new file with mode: 0644]
textures/xocean_brain.png [new file with mode: 0644]
textures/xocean_brain_skeleton.png [new file with mode: 0644]
textures/xocean_brick.png [new file with mode: 0644]
textures/xocean_bubble.png [new file with mode: 0644]
textures/xocean_bubble_skeleton.png [new file with mode: 0644]
textures/xocean_carved.png [new file with mode: 0644]
textures/xocean_circular.png [new file with mode: 0644]
textures/xocean_cobble.png [new file with mode: 0644]
textures/xocean_coral_brain.png [new file with mode: 0644]
textures/xocean_coral_brain_skeleton.png [new file with mode: 0644]
textures/xocean_coral_bubble.png [new file with mode: 0644]
textures/xocean_coral_bubble_skeleton.png [new file with mode: 0644]
textures/xocean_coral_fire.png [new file with mode: 0644]
textures/xocean_coral_fire_skeleton.png [new file with mode: 0644]
textures/xocean_coral_horn.png [new file with mode: 0644]
textures/xocean_coral_horn_skeleton.png [new file with mode: 0644]
textures/xocean_coral_tube.png [new file with mode: 0644]
textures/xocean_coral_tube_skeleton.png [new file with mode: 0644]
textures/xocean_dried_kelp.png [new file with mode: 0644]
textures/xocean_fire.png [new file with mode: 0644]
textures/xocean_fire_skeleton.png [new file with mode: 0644]
textures/xocean_fish.png [new file with mode: 0644]
textures/xocean_fish2.png [new file with mode: 0644]
textures/xocean_fish3.png [new file with mode: 0644]
textures/xocean_fish_edible.png [new file with mode: 0644]
textures/xocean_grass.png [new file with mode: 0644]
textures/xocean_horn.png [new file with mode: 0644]
textures/xocean_horn_skeleton.png [new file with mode: 0644]
textures/xocean_kelp.png [new file with mode: 0644]
textures/xocean_kelp_block.png [new file with mode: 0644]
textures/xocean_lantern.png [new file with mode: 0644]
textures/xocean_pickle.png [new file with mode: 0644]
textures/xocean_pillar.png [new file with mode: 0644]
textures/xocean_stone.png [new file with mode: 0644]
textures/xocean_tube.png [new file with mode: 0644]
textures/xocean_tube_skeleton.png [new file with mode: 0644]

diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644 (file)
index 0000000..b5b78dd
--- /dev/null
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 starninjas
+
+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.
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..f80c5cc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+Xocean [`xocean`]--- 
+Version: 0.1---Adds fish, coral reefs, decorative ocean blocks, and much more!--- For bug reports and info go to the froum topic.
\ No newline at end of file
diff --git a/depends.txt b/depends.txt
new file mode 100644 (file)
index 0000000..203dfa4
--- /dev/null
@@ -0,0 +1,2 @@
+default\r
+mobs?
\ No newline at end of file
diff --git a/init.lua b/init.lua
new file mode 100644 (file)
index 0000000..8c321d3
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,1848 @@
+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
diff --git a/models/dolphin.b3d b/models/dolphin.b3d
new file mode 100644 (file)
index 0000000..9318e53
Binary files /dev/null and b/models/dolphin.b3d differ
diff --git a/models/fishy.b3d b/models/fishy.b3d
new file mode 100644 (file)
index 0000000..2f381c5
Binary files /dev/null and b/models/fishy.b3d differ
diff --git a/models/squid.b3d b/models/squid.b3d
new file mode 100644 (file)
index 0000000..887576b
Binary files /dev/null and b/models/squid.b3d differ
diff --git a/schems/brain.mts b/schems/brain.mts
new file mode 100644 (file)
index 0000000..9866f52
Binary files /dev/null and b/schems/brain.mts differ
diff --git a/schems/brain2.mts b/schems/brain2.mts
new file mode 100644 (file)
index 0000000..23cc15a
Binary files /dev/null and b/schems/brain2.mts differ
diff --git a/schems/brain3.mts b/schems/brain3.mts
new file mode 100644 (file)
index 0000000..378d8e0
Binary files /dev/null and b/schems/brain3.mts differ
diff --git a/schems/brain4.mts b/schems/brain4.mts
new file mode 100644 (file)
index 0000000..a668f82
Binary files /dev/null and b/schems/brain4.mts differ
diff --git a/schems/bubble.mts b/schems/bubble.mts
new file mode 100644 (file)
index 0000000..f269702
Binary files /dev/null and b/schems/bubble.mts differ
diff --git a/schems/bubble2.mts b/schems/bubble2.mts
new file mode 100644 (file)
index 0000000..c99434e
Binary files /dev/null and b/schems/bubble2.mts differ
diff --git a/schems/fire.mts b/schems/fire.mts
new file mode 100644 (file)
index 0000000..c0a6e7d
Binary files /dev/null and b/schems/fire.mts differ
diff --git a/schems/fire2.mts b/schems/fire2.mts
new file mode 100644 (file)
index 0000000..98762f6
Binary files /dev/null and b/schems/fire2.mts differ
diff --git a/schems/horn.mts b/schems/horn.mts
new file mode 100644 (file)
index 0000000..fd3aa02
Binary files /dev/null and b/schems/horn.mts differ
diff --git a/schems/horn2.mts b/schems/horn2.mts
new file mode 100644 (file)
index 0000000..79eb14e
Binary files /dev/null and b/schems/horn2.mts differ
diff --git a/schems/sunken1.mts b/schems/sunken1.mts
new file mode 100644 (file)
index 0000000..c0885db
Binary files /dev/null and b/schems/sunken1.mts differ
diff --git a/schems/sunken2.mts b/schems/sunken2.mts
new file mode 100644 (file)
index 0000000..23c1aac
Binary files /dev/null and b/schems/sunken2.mts differ
diff --git a/schems/sunken3.mts b/schems/sunken3.mts
new file mode 100644 (file)
index 0000000..4e703bc
Binary files /dev/null and b/schems/sunken3.mts differ
diff --git a/schems/tube.mts b/schems/tube.mts
new file mode 100644 (file)
index 0000000..171469b
Binary files /dev/null and b/schems/tube.mts differ
diff --git a/schems/tube2.mts b/schems/tube2.mts
new file mode 100644 (file)
index 0000000..2f2c9af
Binary files /dev/null and b/schems/tube2.mts differ
diff --git a/schems/tube3.mts b/schems/tube3.mts
new file mode 100644 (file)
index 0000000..43c817f
Binary files /dev/null and b/schems/tube3.mts differ
diff --git a/textures/mobs_dolphin.png b/textures/mobs_dolphin.png
new file mode 100644 (file)
index 0000000..f9de1ee
Binary files /dev/null and b/textures/mobs_dolphin.png differ
diff --git a/textures/mobs_fishy.png b/textures/mobs_fishy.png
new file mode 100644 (file)
index 0000000..248cd24
Binary files /dev/null and b/textures/mobs_fishy.png differ
diff --git a/textures/mobs_fishy1.png b/textures/mobs_fishy1.png
new file mode 100644 (file)
index 0000000..7661367
Binary files /dev/null and b/textures/mobs_fishy1.png differ
diff --git a/textures/mobs_fishy2.png b/textures/mobs_fishy2.png
new file mode 100644 (file)
index 0000000..0374579
Binary files /dev/null and b/textures/mobs_fishy2.png differ
diff --git a/textures/mobs_fishy3.png b/textures/mobs_fishy3.png
new file mode 100644 (file)
index 0000000..ea518c6
Binary files /dev/null and b/textures/mobs_fishy3.png differ
diff --git a/textures/mobs_fishy4.png b/textures/mobs_fishy4.png
new file mode 100644 (file)
index 0000000..acb5083
Binary files /dev/null and b/textures/mobs_fishy4.png differ
diff --git a/textures/mobs_fishy5.png b/textures/mobs_fishy5.png
new file mode 100644 (file)
index 0000000..22617ca
Binary files /dev/null and b/textures/mobs_fishy5.png differ
diff --git a/textures/mobs_fishy6.png b/textures/mobs_fishy6.png
new file mode 100644 (file)
index 0000000..3a62df1
Binary files /dev/null and b/textures/mobs_fishy6.png differ
diff --git a/textures/mobs_fishy7.png b/textures/mobs_fishy7.png
new file mode 100644 (file)
index 0000000..80b9029
Binary files /dev/null and b/textures/mobs_fishy7.png differ
diff --git a/textures/mobs_fishy8.png b/textures/mobs_fishy8.png
new file mode 100644 (file)
index 0000000..1ea29c8
Binary files /dev/null and b/textures/mobs_fishy8.png differ
diff --git a/textures/mobs_fishy9.png b/textures/mobs_fishy9.png
new file mode 100644 (file)
index 0000000..964d25f
Binary files /dev/null and b/textures/mobs_fishy9.png differ
diff --git a/textures/xocean_brain.png b/textures/xocean_brain.png
new file mode 100644 (file)
index 0000000..0211369
Binary files /dev/null and b/textures/xocean_brain.png differ
diff --git a/textures/xocean_brain_skeleton.png b/textures/xocean_brain_skeleton.png
new file mode 100644 (file)
index 0000000..96fb03e
Binary files /dev/null and b/textures/xocean_brain_skeleton.png differ
diff --git a/textures/xocean_brick.png b/textures/xocean_brick.png
new file mode 100644 (file)
index 0000000..a5c5ecc
Binary files /dev/null and b/textures/xocean_brick.png differ
diff --git a/textures/xocean_bubble.png b/textures/xocean_bubble.png
new file mode 100644 (file)
index 0000000..e6be7e8
Binary files /dev/null and b/textures/xocean_bubble.png differ
diff --git a/textures/xocean_bubble_skeleton.png b/textures/xocean_bubble_skeleton.png
new file mode 100644 (file)
index 0000000..2402f6b
Binary files /dev/null and b/textures/xocean_bubble_skeleton.png differ
diff --git a/textures/xocean_carved.png b/textures/xocean_carved.png
new file mode 100644 (file)
index 0000000..00715b2
Binary files /dev/null and b/textures/xocean_carved.png differ
diff --git a/textures/xocean_circular.png b/textures/xocean_circular.png
new file mode 100644 (file)
index 0000000..25d6285
Binary files /dev/null and b/textures/xocean_circular.png differ
diff --git a/textures/xocean_cobble.png b/textures/xocean_cobble.png
new file mode 100644 (file)
index 0000000..089dff1
Binary files /dev/null and b/textures/xocean_cobble.png differ
diff --git a/textures/xocean_coral_brain.png b/textures/xocean_coral_brain.png
new file mode 100644 (file)
index 0000000..8798e2d
Binary files /dev/null and b/textures/xocean_coral_brain.png differ
diff --git a/textures/xocean_coral_brain_skeleton.png b/textures/xocean_coral_brain_skeleton.png
new file mode 100644 (file)
index 0000000..37b110e
Binary files /dev/null and b/textures/xocean_coral_brain_skeleton.png differ
diff --git a/textures/xocean_coral_bubble.png b/textures/xocean_coral_bubble.png
new file mode 100644 (file)
index 0000000..c844960
Binary files /dev/null and b/textures/xocean_coral_bubble.png differ
diff --git a/textures/xocean_coral_bubble_skeleton.png b/textures/xocean_coral_bubble_skeleton.png
new file mode 100644 (file)
index 0000000..159c5e7
Binary files /dev/null and b/textures/xocean_coral_bubble_skeleton.png differ
diff --git a/textures/xocean_coral_fire.png b/textures/xocean_coral_fire.png
new file mode 100644 (file)
index 0000000..c800e24
Binary files /dev/null and b/textures/xocean_coral_fire.png differ
diff --git a/textures/xocean_coral_fire_skeleton.png b/textures/xocean_coral_fire_skeleton.png
new file mode 100644 (file)
index 0000000..09a029f
Binary files /dev/null and b/textures/xocean_coral_fire_skeleton.png differ
diff --git a/textures/xocean_coral_horn.png b/textures/xocean_coral_horn.png
new file mode 100644 (file)
index 0000000..d24b354
Binary files /dev/null and b/textures/xocean_coral_horn.png differ
diff --git a/textures/xocean_coral_horn_skeleton.png b/textures/xocean_coral_horn_skeleton.png
new file mode 100644 (file)
index 0000000..358ef18
Binary files /dev/null and b/textures/xocean_coral_horn_skeleton.png differ
diff --git a/textures/xocean_coral_tube.png b/textures/xocean_coral_tube.png
new file mode 100644 (file)
index 0000000..efd41d7
Binary files /dev/null and b/textures/xocean_coral_tube.png differ
diff --git a/textures/xocean_coral_tube_skeleton.png b/textures/xocean_coral_tube_skeleton.png
new file mode 100644 (file)
index 0000000..83e0c14
Binary files /dev/null and b/textures/xocean_coral_tube_skeleton.png differ
diff --git a/textures/xocean_dried_kelp.png b/textures/xocean_dried_kelp.png
new file mode 100644 (file)
index 0000000..5ae7823
Binary files /dev/null and b/textures/xocean_dried_kelp.png differ
diff --git a/textures/xocean_fire.png b/textures/xocean_fire.png
new file mode 100644 (file)
index 0000000..1ad92c1
Binary files /dev/null and b/textures/xocean_fire.png differ
diff --git a/textures/xocean_fire_skeleton.png b/textures/xocean_fire_skeleton.png
new file mode 100644 (file)
index 0000000..5e1e2ea
Binary files /dev/null and b/textures/xocean_fire_skeleton.png differ
diff --git a/textures/xocean_fish.png b/textures/xocean_fish.png
new file mode 100644 (file)
index 0000000..5356469
Binary files /dev/null and b/textures/xocean_fish.png differ
diff --git a/textures/xocean_fish2.png b/textures/xocean_fish2.png
new file mode 100644 (file)
index 0000000..a9b0f41
Binary files /dev/null and b/textures/xocean_fish2.png differ
diff --git a/textures/xocean_fish3.png b/textures/xocean_fish3.png
new file mode 100644 (file)
index 0000000..ff10053
Binary files /dev/null and b/textures/xocean_fish3.png differ
diff --git a/textures/xocean_fish_edible.png b/textures/xocean_fish_edible.png
new file mode 100644 (file)
index 0000000..83f0425
Binary files /dev/null and b/textures/xocean_fish_edible.png differ
diff --git a/textures/xocean_grass.png b/textures/xocean_grass.png
new file mode 100644 (file)
index 0000000..68e1730
Binary files /dev/null and b/textures/xocean_grass.png differ
diff --git a/textures/xocean_horn.png b/textures/xocean_horn.png
new file mode 100644 (file)
index 0000000..715736d
Binary files /dev/null and b/textures/xocean_horn.png differ
diff --git a/textures/xocean_horn_skeleton.png b/textures/xocean_horn_skeleton.png
new file mode 100644 (file)
index 0000000..2e79f11
Binary files /dev/null and b/textures/xocean_horn_skeleton.png differ
diff --git a/textures/xocean_kelp.png b/textures/xocean_kelp.png
new file mode 100644 (file)
index 0000000..651543e
Binary files /dev/null and b/textures/xocean_kelp.png differ
diff --git a/textures/xocean_kelp_block.png b/textures/xocean_kelp_block.png
new file mode 100644 (file)
index 0000000..6ce42d4
Binary files /dev/null and b/textures/xocean_kelp_block.png differ
diff --git a/textures/xocean_lantern.png b/textures/xocean_lantern.png
new file mode 100644 (file)
index 0000000..65ce08a
Binary files /dev/null and b/textures/xocean_lantern.png differ
diff --git a/textures/xocean_pickle.png b/textures/xocean_pickle.png
new file mode 100644 (file)
index 0000000..334100b
Binary files /dev/null and b/textures/xocean_pickle.png differ
diff --git a/textures/xocean_pillar.png b/textures/xocean_pillar.png
new file mode 100644 (file)
index 0000000..a8cc629
Binary files /dev/null and b/textures/xocean_pillar.png differ
diff --git a/textures/xocean_stone.png b/textures/xocean_stone.png
new file mode 100644 (file)
index 0000000..342126d
Binary files /dev/null and b/textures/xocean_stone.png differ
diff --git a/textures/xocean_tube.png b/textures/xocean_tube.png
new file mode 100644 (file)
index 0000000..9a0a8a8
Binary files /dev/null and b/textures/xocean_tube.png differ
diff --git a/textures/xocean_tube_skeleton.png b/textures/xocean_tube_skeleton.png
new file mode 100644 (file)
index 0000000..7db3355
Binary files /dev/null and b/textures/xocean_tube_skeleton.png differ