]> git.lizzy.rs Git - xocean.git/blob - init.lua
Add files via upload
[xocean.git] / init.lua
1 minetest.register_node("xocean:ocean_cobble", {\r
2         description = "Ocean Cobblestone",\r
3         tile_images = {"xocean_cobble.png"},\r
4         groups = {cracky=3},\r
5 })\r
6 \r
7 minetest.register_node("xocean:ocean_stone", {\r
8         description = "Ocean Stone",\r
9         tile_images = {"xocean_stone.png"},\r
10         groups = {cracky=3},\r
11         drop= "xocean:ocean_cobble",\r
12 })\r
13 \r
14 minetest.register_craft({\r
15         type = "cooking",\r
16         output = "xocean:ocean_stone",\r
17         recipe = "xocean:ocean_cobble",\r
18 })\r
19 ---Spawn the stone\r
20 minetest.register_ore({\r
21                 ore_type        = "blob",\r
22                 ore             = "xocean:ocean_stone",\r
23                 wherein         = {"default:sand"},\r
24                 clust_scarcity  = 32 * 32 * 32,\r
25                 clust_size      = 8,\r
26                 y_min           = -15,\r
27                 y_max           = 0,\r
28                 noise_threshold = 0.0,\r
29                 noise_params    = {\r
30                         offset = 0.5,\r
31                         scale = 0.2,\r
32                         spread = {x = 8, y = 5, z = 8},\r
33                         seed = -316,\r
34                         octaves = 1,\r
35                         persist = 0.0\r
36                 },\r
37         })\r
38 \r
39 minetest.register_node("xocean:ocean_carved", {\r
40         description = "Carved Ocean Stone",\r
41         tile_images = {"xocean_carved.png"},\r
42         groups = {cracky=2},\r
43 })\r
44 \r
45 minetest.register_craft({\r
46         output = '"xocean:ocean_carved" 4',\r
47         recipe = {\r
48                 {'xocean:ocean_stone', 'xocean:ocean_stone',},\r
49                 {'xocean:ocean_stone', 'xocean:ocean_stone',},\r
50                 },\r
51 })\r
52 \r
53 minetest.register_node("xocean:ocean_circular", {\r
54         description = "Circular Ocean Stone",\r
55         tile_images = {"xocean_circular.png"},\r
56         groups = {cracky=2},\r
57 })\r
58 \r
59 minetest.register_craft({\r
60         output = '"xocean:ocean_circular" 4',\r
61         recipe = {\r
62                 {'xocean:ocean_craved', 'xocean:ocean_carved',},\r
63                 {'xocean:ocean_craved', 'xocean:ocean_carved',},\r
64                 },\r
65 })\r
66 \r
67 minetest.register_node("xocean:ocean_pillar", {\r
68         description = "Ocean Pillar",\r
69         tile_images = {"xocean_pillar.png"},\r
70         groups = {cracky=2},\r
71 })\r
72 \r
73 minetest.register_craft({\r
74         output = '"xocean:ocean_pillar" 4',\r
75         recipe = {\r
76                 {'xocean:ocean_brick', 'xocean:ocean_brick',},\r
77                 {'xocean:ocean_brick', 'xocean:ocean_brick',},\r
78                 },\r
79 })\r
80 \r
81 minetest.register_node("xocean:ocean_brick", {\r
82         description = "Ocean Brick",\r
83         tile_images = {"xocean_brick.png"},\r
84         groups = {cracky=2},\r
85 })\r
86 \r
87 minetest.register_craft({\r
88         output = '"xocean:ocean_brick" 4',\r
89         recipe = {\r
90                 {'xocean:ocean_cobble', 'xocean:ocean_cobble',},\r
91                 {'xocean:ocean_cobble', 'xocean:ocean_cobble',},\r
92                 },\r
93 })\r
94 \r
95 minetest.register_node("xocean:sea_lantern", {\r
96     description = "Sea Lantern",\r
97     drawtype = "glasslike",\r
98         light_source = 30,\r
99     tiles = {"xocean_lantern.png"},\r
100     paramtype = "light",\r
101     is_ground_content = true,\r
102     sunlight_propagates = true,\r
103     sounds = default.node_sound_glass_defaults(),\r
104     groups = {cracky=3,oddly_breakable_by_hand=3},\r
105 })\r
106 \r
107 minetest.register_craft({\r
108         output = '"xocean:sea_lantern" 4',\r
109         recipe = {\r
110                 {'default:torch', 'default:glass', 'default:torch', },\r
111                 {'default:glass', 'bucket:bucket_water', 'default:glass', },\r
112                 {'default:torch', 'default:glass', 'default:torch', },\r
113                 },\r
114                 replacements = {{ "bucket:bucket_water", "bucket:bucket_empty"}}\r
115 })\r
116 ---Sea stuff\r
117 minetest.register_node("xocean:kelp_block", {\r
118         description = "Dried Kelp Block",\r
119         tile_images = {"xocean_kelp_block.png"},\r
120         groups = {snappy=3},\r
121         drop= "xocean:kelp 9",\r
122 })\r
123 minetest.register_craft({\r
124         output = '"xocean:kelp_block" 1',\r
125         recipe = {\r
126                 {'xocean:kelp', 'xocean:kelp', 'xocean:kelp', },\r
127                 {'xocean:kelp', 'xocean:kelp', 'xocean:kelp', },\r
128                 {'xocean:kelp', 'xocean:kelp', 'xocean:kelp', },\r
129                 },\r
130 })\r
131 minetest.override_item("default:sand_with_kelp", {\r
132         description = "Kelp",\r
133         drawtype = "plantlike_rooted",\r
134         waving = 1,\r
135         tiles = {"default_sand.png"},\r
136         special_tiles = {{name = "default_kelp.png", tileable_vertical = true}},\r
137         inventory_image = "xocean_kelp.png",\r
138         wield_image = "xocean_kelp.png",\r
139         paramtype = "light",\r
140         paramtype2 = "leveled",\r
141         groups = {snappy = 3},\r
142         selection_box = {\r
143                 type = "fixed",\r
144                 fixed = {\r
145                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
146                                 {-2/16, 0.5, -2/16, 2/16, 3.5, 2/16},\r
147                 },\r
148         },\r
149         node_dig_prediction = "default:sand",\r
150         node_placement_prediction = "",\r
151         sounds = default.node_sound_sand_defaults({\r
152                 dig = {name = "default_dig_snappy", gain = 0.2},\r
153                 dug = {name = "default_grass_footstep", gain = 0.25},\r
154         }),\r
155 \r
156         on_place = function(itemstack, placer, pointed_thing)\r
157                 -- Call on_rightclick if the pointed node defines it\r
158                 if pointed_thing.type == "node" and placer and\r
159                                 not placer:get_player_control().sneak then\r
160                         local node_ptu = minetest.get_node(pointed_thing.under)\r
161                         local def_ptu = minetest.registered_nodes[node_ptu.name]\r
162                         if def_ptu and def_ptu.on_rightclick then\r
163                                 return def_ptu.on_rightclick(pointed_thing.under, node_ptu, placer,\r
164                                         itemstack, pointed_thing)\r
165                         end\r
166                 end\r
167 \r
168                 local pos = pointed_thing.under\r
169                 if minetest.get_node(pos).name ~= "default:sand" then\r
170                         return itemstack\r
171                 end\r
172 \r
173                 local height = math.random(4, 6)\r
174                 local pos_top = {x = pos.x, y = pos.y + height, z = pos.z}\r
175                 local node_top = minetest.get_node(pos_top)\r
176                 local def_top = minetest.registered_nodes[node_top.name]\r
177                 local player_name = placer:get_player_name()\r
178 \r
179                 if def_top and def_top.liquidtype == "source" and\r
180                                 minetest.get_item_group(node_top.name, "water") > 0 then\r
181                         if not minetest.is_protected(pos, player_name) and\r
182                                         not minetest.is_protected(pos_top, player_name) then\r
183                                 minetest.set_node(pos, {name = "default:sand_with_kelp",\r
184                                         param2 = height * 16})\r
185                                 if not (creative and creative.is_enabled_for\r
186                                                 and creative.is_enabled_for(player_name)) then\r
187                                         itemstack:take_item()\r
188                                 end\r
189                         else\r
190                                 minetest.chat_send_player(player_name, "Node is protected")\r
191                                 minetest.record_protection_violation(pos, player_name)\r
192                         end\r
193                 end\r
194 \r
195                 return itemstack\r
196         end,\r
197 \r
198         after_destruct  = function(pos, oldnode)\r
199                 minetest.set_node(pos, {name = "default:sand"})\r
200         end\r
201 })\r
202 minetest.register_craft({\r
203         type = "cooking",\r
204         output = "xocean:kelp",\r
205         recipe = "default:sand_with_kelp",\r
206 })\r
207 minetest.register_craftitem("xocean:kelp", {\r
208         description = "Dried Kelp",\r
209         on_use = minetest.item_eat(2),\r
210         inventory_image = "xocean_dried_kelp.png",\r
211 })\r
212 minetest.register_node("xocean:seagrass", {\r
213         description = "Seagrass",\r
214         drawtype = "plantlike_rooted",\r
215         waving = 1,\r
216         paramtype = "light",\r
217         tiles = {"default_sand.png"},\r
218         special_tiles = {{name = "xocean_grass.png", tileable_vertical = true}},\r
219         inventory_image = "xocean_grass.png",\r
220         groups = {snappy = 3},\r
221         selection_box = {\r
222                 type = "fixed",\r
223                 fixed = {\r
224                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
225                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
226                 },\r
227         },\r
228         drop = "",\r
229         node_dig_prediction = "default:sand",\r
230         node_placement_prediction = "",\r
231         sounds = default.node_sound_stone_defaults({\r
232                 dig = {name = "default_dig_snappy", gain = 0.2},\r
233                 dug = {name = "default_grass_footstep", gain = 0.25},\r
234         }),\r
235 \r
236         on_place = function(itemstack, placer, pointed_thing)\r
237                 if pointed_thing.type ~= "node" or not placer then\r
238                         return itemstack\r
239                 end\r
240 \r
241                 local player_name = placer:get_player_name()\r
242                 local pos_under = pointed_thing.under\r
243                 local pos_above = pointed_thing.above\r
244 \r
245                 if minetest.get_node(pos_under).name ~= "default:sand" or\r
246                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
247                         return itemstack\r
248                 end\r
249 \r
250                 if minetest.is_protected(pos_under, player_name) or\r
251                                 minetest.is_protected(pos_above, player_name) then\r
252                         minetest.chat_send_player(player_name, "Node is protected")\r
253                         minetest.record_protection_violation(pos_under, player_name)\r
254                         return itemstack\r
255                 end\r
256 \r
257                 minetest.set_node(pos_under, {name = "xocean:seagrass"})\r
258                 if not (creative and creative.is_enabled_for(player_name)) then\r
259                         itemstack:take_item()\r
260                 end\r
261 \r
262                 return itemstack\r
263         end,\r
264 \r
265         after_destruct  = function(pos, oldnode)\r
266                 minetest.set_node(pos, {name = "default:sand"})\r
267         end,\r
268 })\r
269 minetest.register_craftitem("xocean:fish_edible", {\r
270         description = "Tropical Fish",\r
271         on_use = minetest.item_eat(3),\r
272         inventory_image = "xocean_fish_edible.png",\r
273 })\r
274 minetest.register_node("xocean:pickle", {\r
275         description = "Sea Pickle",\r
276         drawtype = "plantlike_rooted",\r
277         waving = 1,\r
278         paramtype = "light",\r
279         tiles = {"default_sand.png"},\r
280         special_tiles = {{name = "xocean_pickle.png", tileable_vertical = true}},\r
281         inventory_image = "xocean_pickle.png",\r
282         groups = {snappy = 3},\r
283         selection_box = {\r
284                 type = "fixed",\r
285                 fixed = {\r
286                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
287                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
288                 },\r
289         },\r
290         light_source = 3,\r
291         node_dig_prediction = "default:sand",\r
292         node_placement_prediction = "",\r
293         sounds = default.node_sound_stone_defaults({\r
294                 dig = {name = "default_dig_snappy", gain = 0.2},\r
295                 dug = {name = "default_grass_footstep", gain = 0.25},\r
296         }),\r
297 \r
298         on_place = function(itemstack, placer, pointed_thing)\r
299                 if pointed_thing.type ~= "node" or not placer then\r
300                         return itemstack\r
301                 end\r
302 \r
303                 local player_name = placer:get_player_name()\r
304                 local pos_under = pointed_thing.under\r
305                 local pos_above = pointed_thing.above\r
306 \r
307                 if minetest.get_node(pos_under).name ~= "default:sand" or\r
308                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
309                         return itemstack\r
310                 end\r
311 \r
312                 if minetest.is_protected(pos_under, player_name) or\r
313                                 minetest.is_protected(pos_above, player_name) then\r
314                         minetest.chat_send_player(player_name, "Node is protected")\r
315                         minetest.record_protection_violation(pos_under, player_name)\r
316                         return itemstack\r
317                 end\r
318 \r
319                 minetest.set_node(pos_under, {name = "xocean:pickle"})\r
320                 if not (creative and creative.is_enabled_for(player_name)) then\r
321                         itemstack:take_item()\r
322                 end\r
323 \r
324                 return itemstack\r
325         end,\r
326 \r
327         after_destruct  = function(pos, oldnode)\r
328                 minetest.set_node(pos, {name = "default:sand"})\r
329         end,\r
330 })\r
331 ---Corals\r
332 minetest.register_node("xocean:brain_block", {\r
333         description = "Brain Coral Block",\r
334         tiles = {"xocean_coral_brain.png"},\r
335         groups = {cracky = 3},\r
336         drop = "xocean:brain_skeleton",\r
337         sounds = default.node_sound_stone_defaults(),\r
338 })\r
339 minetest.override_item("default:coral_pink", {\r
340         description = "Brain Coral",\r
341         drawtype = "plantlike_rooted",\r
342         waving = 1,\r
343         paramtype = "light",\r
344         tiles = {"xocean_coral_brain.png"},\r
345         special_tiles = {{name = "xocean_brain.png", tileable_vertical = true}},\r
346         inventory_image = "xocean_brain.png",\r
347         groups = {snappy = 3},\r
348         selection_box = {\r
349                 type = "fixed",\r
350                 fixed = {\r
351                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
352                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
353                 },\r
354         },\r
355         node_dig_prediction = "xocean:brain_block",\r
356         node_placement_prediction = "",\r
357         sounds = default.node_sound_stone_defaults({\r
358                 dig = {name = "default_dig_snappy", gain = 0.2},\r
359                 dug = {name = "default_grass_footstep", gain = 0.25},\r
360         }),\r
361 \r
362         on_place = function(itemstack, placer, pointed_thing)\r
363                 if pointed_thing.type ~= "node" or not placer then\r
364                         return itemstack\r
365                 end\r
366 \r
367                 local player_name = placer:get_player_name()\r
368                 local pos_under = pointed_thing.under\r
369                 local pos_above = pointed_thing.above\r
370 \r
371                 if minetest.get_node(pos_under).name ~= "xocean:brain_block" or\r
372                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
373                         return itemstack\r
374                 end\r
375 \r
376                 if minetest.is_protected(pos_under, player_name) or\r
377                                 minetest.is_protected(pos_above, player_name) then\r
378                         minetest.chat_send_player(player_name, "Node is protected")\r
379                         minetest.record_protection_violation(pos_under, player_name)\r
380                         return itemstack\r
381                 end\r
382 \r
383                 minetest.set_node(pos_under, {name = "default:coral_pink"})\r
384                 if not (creative and creative.is_enabled_for(player_name)) then\r
385                         itemstack:take_item()\r
386                 end\r
387 \r
388                 return itemstack\r
389         end,\r
390 \r
391         after_destruct  = function(pos, oldnode)\r
392                 minetest.set_node(pos, {name = "xocean:brain_block"})\r
393         end,\r
394 })\r
395 minetest.register_node("xocean:brain_skeleton", {\r
396         description = "Brain Coral Skeleton",\r
397         tiles = {"xocean_coral_brain_skeleton.png"},\r
398         groups = {cracky = 3},\r
399         sounds = default.node_sound_stone_defaults(),\r
400 })\r
401 minetest.register_node("xocean:skeleton_brain", {\r
402         description = "Brain Coral Skeleton",\r
403         drawtype = "plantlike_rooted",\r
404         waving = 1,\r
405         paramtype = "light",\r
406         tiles = {"xocean_coral_brain_skeleton.png"},\r
407         special_tiles = {{name = "xocean_brain_skeleton.png", tileable_vertical = true}},\r
408         inventory_image = "xocean_brain_skeleton.png",\r
409         groups = {snappy = 3},\r
410         selection_box = {\r
411                 type = "fixed",\r
412                 fixed = {\r
413                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
414                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
415                 },\r
416         },\r
417         node_dig_prediction = "xocean:brain_skeleton",\r
418         node_placement_prediction = "",\r
419         sounds = default.node_sound_stone_defaults({\r
420                 dig = {name = "default_dig_snappy", gain = 0.2},\r
421                 dug = {name = "default_grass_footstep", gain = 0.25},\r
422         }),\r
423 \r
424         on_place = function(itemstack, placer, pointed_thing)\r
425                 if pointed_thing.type ~= "node" or not placer then\r
426                         return itemstack\r
427                 end\r
428 \r
429                 local player_name = placer:get_player_name()\r
430                 local pos_under = pointed_thing.under\r
431                 local pos_above = pointed_thing.above\r
432 \r
433                 if minetest.get_node(pos_under).name ~= "xocean:brain_skeleton" or\r
434                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
435                         return itemstack\r
436                 end\r
437 \r
438                 if minetest.is_protected(pos_under, player_name) or\r
439                                 minetest.is_protected(pos_above, player_name) then\r
440                         minetest.chat_send_player(player_name, "Node is protected")\r
441                         minetest.record_protection_violation(pos_under, player_name)\r
442                         return itemstack\r
443                 end\r
444 \r
445                 minetest.set_node(pos_under, {name = "xocean:skeleton_brain"})\r
446                 if not (creative and creative.is_enabled_for(player_name)) then\r
447                         itemstack:take_item()\r
448                 end\r
449 \r
450                 return itemstack\r
451         end,\r
452 \r
453         after_destruct  = function(pos, oldnode)\r
454                 minetest.set_node(pos, {name = "xocean:brain_skeleton"})\r
455         end,\r
456 })\r
457 minetest.register_node("xocean:tube_block", {\r
458         description = "Tube Coral Block",\r
459         tiles = {"xocean_coral_tube.png"},\r
460         groups = {cracky = 3},\r
461         drop = "xocean:tube_skeleton",\r
462         sounds = default.node_sound_stone_defaults(),\r
463 })\r
464 minetest.override_item("default:coral_cyan", {\r
465         description = "Tube Coral",\r
466         drawtype = "plantlike_rooted",\r
467         waving = 1,\r
468         paramtype = "light",\r
469         tiles = {"xocean_coral_tube.png"},\r
470         special_tiles = {{name = "xocean_tube.png", tileable_vertical = true}},\r
471         inventory_image = "xocean_tube.png",\r
472         groups = {snappy = 3},\r
473         selection_box = {\r
474                 type = "fixed",\r
475                 fixed = {\r
476                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
477                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
478                 },\r
479         },\r
480         drop = "xocean:tube_skeleton",\r
481         node_dig_prediction = "xocean:tube_block",\r
482         node_placement_prediction = "",\r
483         sounds = default.node_sound_stone_defaults({\r
484                 dig = {name = "default_dig_snappy", gain = 0.2},\r
485                 dug = {name = "default_grass_footstep", gain = 0.25},\r
486         }),\r
487 \r
488         on_place = function(itemstack, placer, pointed_thing)\r
489                 if pointed_thing.type ~= "node" or not placer then\r
490                         return itemstack\r
491                 end\r
492 \r
493                 local player_name = placer:get_player_name()\r
494                 local pos_under = pointed_thing.under\r
495                 local pos_above = pointed_thing.above\r
496 \r
497                 if minetest.get_node(pos_under).name ~= "xocean:tube_block" or\r
498                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
499                         return itemstack\r
500                 end\r
501 \r
502                 if minetest.is_protected(pos_under, player_name) or\r
503                                 minetest.is_protected(pos_above, player_name) then\r
504                         minetest.chat_send_player(player_name, "Node is protected")\r
505                         minetest.record_protection_violation(pos_under, player_name)\r
506                         return itemstack\r
507                 end\r
508 \r
509                 minetest.set_node(pos_under, {name = "default:cyan_pink"})\r
510                 if not (creative and creative.is_enabled_for(player_name)) then\r
511                         itemstack:take_item()\r
512                 end\r
513 \r
514                 return itemstack\r
515         end,\r
516 \r
517         after_destruct  = function(pos, oldnode)\r
518                 minetest.set_node(pos, {name = "xocean:tube_block"})\r
519         end,\r
520 })\r
521 minetest.register_node("xocean:tube_skeleton", {\r
522         description = "Tube Coral Skeleton",\r
523         tiles = {"xocean_coral_tube_skeleton.png"},\r
524         groups = {cracky = 3},\r
525         sounds = default.node_sound_stone_defaults(),\r
526 })\r
527 minetest.register_node("xocean:tube_bubble", {\r
528         description = "Tube Coral Skeleton",\r
529         drawtype = "plantlike_rooted",\r
530         waving = 1,\r
531         paramtype = "light",\r
532         tiles = {"xocean_coral_tube_skeleton.png"},\r
533         special_tiles = {{name = "xocean_tube_skeleton.png", tileable_vertical = true}},\r
534         inventory_image = "xocean_tube_skeleton.png",\r
535         groups = {snappy = 3},\r
536         selection_box = {\r
537                 type = "fixed",\r
538                 fixed = {\r
539                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
540                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
541                 },\r
542         },\r
543         node_dig_prediction = "xocean:tube_skeleton",\r
544         node_placement_prediction = "",\r
545         sounds = default.node_sound_stone_defaults({\r
546                 dig = {name = "default_dig_snappy", gain = 0.2},\r
547                 dug = {name = "default_grass_footstep", gain = 0.25},\r
548         }),\r
549 \r
550         on_place = function(itemstack, placer, pointed_thing)\r
551                 if pointed_thing.type ~= "node" or not placer then\r
552                         return itemstack\r
553                 end\r
554 \r
555                 local player_name = placer:get_player_name()\r
556                 local pos_under = pointed_thing.under\r
557                 local pos_above = pointed_thing.above\r
558 \r
559                 if minetest.get_node(pos_under).name ~= "xocean:tube_skeleton" or\r
560                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
561                         return itemstack\r
562                 end\r
563 \r
564                 if minetest.is_protected(pos_under, player_name) or\r
565                                 minetest.is_protected(pos_above, player_name) then\r
566                         minetest.chat_send_player(player_name, "Node is protected")\r
567                         minetest.record_protection_violation(pos_under, player_name)\r
568                         return itemstack\r
569                 end\r
570 \r
571                 minetest.set_node(pos_under, {name = "xocean:skeleton_tube"})\r
572                 if not (creative and creative.is_enabled_for(player_name)) then\r
573                         itemstack:take_item()\r
574                 end\r
575 \r
576                 return itemstack\r
577         end,\r
578 \r
579         after_destruct  = function(pos, oldnode)\r
580                 minetest.set_node(pos, {name = "xocean:tube_skeleton"})\r
581         end,\r
582 })\r
583 minetest.register_node("xocean:bubble_block", {\r
584         description = "Bubble Coral Block",\r
585         tiles = {"xocean_coral_bubble.png"},\r
586         groups = {cracky = 3},\r
587         drop = "xocean:bubble_skeleton",\r
588         sounds = default.node_sound_stone_defaults(),\r
589 })\r
590 minetest.register_node("xocean:bubble", {\r
591         description = "Bubble Coral",\r
592         drawtype = "plantlike_rooted",\r
593         waving = 1,\r
594         paramtype = "light",\r
595         tiles = {"xocean_coral_bubble.png"},\r
596         special_tiles = {{name = "xocean_bubble.png", tileable_vertical = true}},\r
597         inventory_image = "xocean_bubble.png",\r
598         groups = {snappy = 3},\r
599         selection_box = {\r
600                 type = "fixed",\r
601                 fixed = {\r
602                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
603                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
604                 },\r
605         },\r
606         node_dig_prediction = "xocean:bubble_block",\r
607         node_placement_prediction = "",\r
608         sounds = default.node_sound_stone_defaults({\r
609                 dig = {name = "default_dig_snappy", gain = 0.2},\r
610                 dug = {name = "default_grass_footstep", gain = 0.25},\r
611         }),\r
612 \r
613         on_place = function(itemstack, placer, pointed_thing)\r
614                 if pointed_thing.type ~= "node" or not placer then\r
615                         return itemstack\r
616                 end\r
617 \r
618                 local player_name = placer:get_player_name()\r
619                 local pos_under = pointed_thing.under\r
620                 local pos_above = pointed_thing.above\r
621 \r
622                 if minetest.get_node(pos_under).name ~= "xocean:bubble_block" or\r
623                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
624                         return itemstack\r
625                 end\r
626 \r
627                 if minetest.is_protected(pos_under, player_name) or\r
628                                 minetest.is_protected(pos_above, player_name) then\r
629                         minetest.chat_send_player(player_name, "Node is protected")\r
630                         minetest.record_protection_violation(pos_under, player_name)\r
631                         return itemstack\r
632                 end\r
633 \r
634                 minetest.set_node(pos_under, {name = "xocean:bubble"})\r
635                 if not (creative and creative.is_enabled_for(player_name)) then\r
636                         itemstack:take_item()\r
637                 end\r
638 \r
639                 return itemstack\r
640         end,\r
641 \r
642         after_destruct  = function(pos, oldnode)\r
643                 minetest.set_node(pos, {name = "xocean:bubble_block"})\r
644         end,\r
645 })\r
646 minetest.register_node("xocean:bubble_skeleton", {\r
647         description = "Bubble Coral Skeleton Block",\r
648         tiles = {"xocean_coral_bubble_skeleton.png"},\r
649         groups = {cracky = 3},\r
650         sounds = default.node_sound_stone_defaults(),\r
651 })\r
652 minetest.register_node("xocean:skeleton_bubble", {\r
653         description = "Bubble Coral Skeleton",\r
654         drawtype = "plantlike_rooted",\r
655         waving = 1,\r
656         paramtype = "light",\r
657         tiles = {"xocean_coral_bubble_skeleton.png"},\r
658         special_tiles = {{name = "xocean_bubble_skeleton.png", tileable_vertical = true}},\r
659         inventory_image = "xocean_bubble_skeleton.png",\r
660         groups = {snappy = 3},\r
661         selection_box = {\r
662                 type = "fixed",\r
663                 fixed = {\r
664                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
665                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
666                 },\r
667         },\r
668         drop = "xocean:skeleton_bubble",\r
669         node_dig_prediction = "xocean:bubble_skeleton",\r
670         node_placement_prediction = "",\r
671         sounds = default.node_sound_stone_defaults({\r
672                 dig = {name = "default_dig_snappy", gain = 0.2},\r
673                 dug = {name = "default_grass_footstep", gain = 0.25},\r
674         }),\r
675 \r
676         on_place = function(itemstack, placer, pointed_thing)\r
677                 if pointed_thing.type ~= "node" or not placer then\r
678                         return itemstack\r
679                 end\r
680 \r
681                 local player_name = placer:get_player_name()\r
682                 local pos_under = pointed_thing.under\r
683                 local pos_above = pointed_thing.above\r
684 \r
685                 if minetest.get_node(pos_under).name ~= "xocean:bubble_skeleton" or\r
686                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
687                         return itemstack\r
688                 end\r
689 \r
690                 if minetest.is_protected(pos_under, player_name) or\r
691                                 minetest.is_protected(pos_above, player_name) then\r
692                         minetest.chat_send_player(player_name, "Node is protected")\r
693                         minetest.record_protection_violation(pos_under, player_name)\r
694                         return itemstack\r
695                 end\r
696 \r
697                 minetest.set_node(pos_under, {name = "xocean:skeleton_bubble"})\r
698                 if not (creative and creative.is_enabled_for(player_name)) then\r
699                         itemstack:take_item()\r
700                 end\r
701 \r
702                 return itemstack\r
703         end,\r
704 \r
705         after_destruct  = function(pos, oldnode)\r
706                 minetest.set_node(pos, {name = "xocean:bubble_skeleton"})\r
707         end,\r
708 })\r
709 minetest.override_item("default:coral_brown", {\r
710         description = "Horn Coral Block",\r
711         tiles = {"xocean_coral_horn.png"},\r
712         groups = {cracky = 3},\r
713         drop = "default:coral_skeleton",\r
714         sounds = default.node_sound_stone_defaults(),\r
715 })\r
716 minetest.register_node("xocean:horn", {\r
717         description = "Horn Coral",\r
718         drawtype = "plantlike_rooted",\r
719         waving = 1,\r
720         paramtype = "light",\r
721         tiles = {"xocean_coral_horn.png"},\r
722         special_tiles = {{name = "xocean_horn.png", tileable_vertical = true}},\r
723         inventory_image = "xocean_horn.png",\r
724         groups = {snappy = 3},\r
725         selection_box = {\r
726                 type = "fixed",\r
727                 fixed = {\r
728                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
729                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
730                 },\r
731         },\r
732         node_dig_prediction = "xocean:horn_block",\r
733         node_placement_prediction = "",\r
734         sounds = default.node_sound_stone_defaults({\r
735                 dig = {name = "default_dig_snappy", gain = 0.2},\r
736                 dug = {name = "default_grass_footstep", gain = 0.25},\r
737         }),\r
738 \r
739         on_place = function(itemstack, placer, pointed_thing)\r
740                 if pointed_thing.type ~= "node" or not placer then\r
741                         return itemstack\r
742                 end\r
743 \r
744                 local player_name = placer:get_player_name()\r
745                 local pos_under = pointed_thing.under\r
746                 local pos_above = pointed_thing.above\r
747 \r
748                 if minetest.get_node(pos_under).name ~= "xocean:horn_block" or\r
749                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
750                         return itemstack\r
751                 end\r
752 \r
753                 if minetest.is_protected(pos_under, player_name) or\r
754                                 minetest.is_protected(pos_above, player_name) then\r
755                         minetest.chat_send_player(player_name, "Node is protected")\r
756                         minetest.record_protection_violation(pos_under, player_name)\r
757                         return itemstack\r
758                 end\r
759 \r
760                 minetest.set_node(pos_under, {name = "xocean:horn"})\r
761                 if not (creative and creative.is_enabled_for(player_name)) then\r
762                         itemstack:take_item()\r
763                 end\r
764 \r
765                 return itemstack\r
766         end,\r
767 \r
768         after_destruct  = function(pos, oldnode)\r
769                 minetest.set_node(pos, {name = "xocean:horn_block"})\r
770         end,\r
771 })\r
772 minetest.override_item("default:coral_skeleton", {\r
773         description = "Horn Coral Skeleton Block",\r
774         tiles = {"xocean_coral_horn_skeleton.png"},\r
775         groups = {cracky = 3},\r
776         sounds = default.node_sound_stone_defaults(),\r
777 })\r
778 minetest.register_node("xocean:skeleton_horn", {\r
779         description = "Horn Coral Skeleton",\r
780         drawtype = "plantlike_rooted",\r
781         waving = 1,\r
782         paramtype = "light",\r
783         tiles = {"xocean_coral_horn_skeleton.png"},\r
784         special_tiles = {{name = "xocean_horn_skeleton.png", tileable_vertical = true}},\r
785         inventory_image = "xocean_horn_skeleton.png",\r
786         groups = {snappy = 3},\r
787         selection_box = {\r
788                 type = "fixed",\r
789                 fixed = {\r
790                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
791                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
792                 },\r
793         },\r
794         drop = "xocean:skeleton:horn",\r
795         node_dig_prediction = "xocean:horn_skeleton",\r
796         node_placement_prediction = "",\r
797         sounds = default.node_sound_stone_defaults({\r
798                 dig = {name = "default_dig_snappy", gain = 0.2},\r
799                 dug = {name = "default_grass_footstep", gain = 0.25},\r
800         }),\r
801 \r
802         on_place = function(itemstack, placer, pointed_thing)\r
803                 if pointed_thing.type ~= "node" or not placer then\r
804                         return itemstack\r
805                 end\r
806 \r
807                 local player_name = placer:get_player_name()\r
808                 local pos_under = pointed_thing.under\r
809                 local pos_above = pointed_thing.above\r
810 \r
811                 if minetest.get_node(pos_under).name ~= "xocean:horn_skeleton" or\r
812                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
813                         return itemstack\r
814                 end\r
815 \r
816                 if minetest.is_protected(pos_under, player_name) or\r
817                                 minetest.is_protected(pos_above, player_name) then\r
818                         minetest.chat_send_player(player_name, "Node is protected")\r
819                         minetest.record_protection_violation(pos_under, player_name)\r
820                         return itemstack\r
821                 end\r
822 \r
823                 minetest.set_node(pos_under, {name = "xocean:skeleton_horn"})\r
824                 if not (creative and creative.is_enabled_for(player_name)) then\r
825                         itemstack:take_item()\r
826                 end\r
827 \r
828                 return itemstack\r
829         end,\r
830 \r
831         after_destruct  = function(pos, oldnode)\r
832                 minetest.set_node(pos, {name = "xocean:horn_skeleton"})\r
833         end,\r
834 })\r
835 minetest.register_node("xocean:fire", {\r
836         description = "Fire Coral",\r
837         drawtype = "plantlike_rooted",\r
838         waving = 1,\r
839         paramtype = "light",\r
840         tiles = {"xocean_coral_fire.png"},\r
841         special_tiles = {{name = "xocean_fire.png", tileable_vertical = true}},\r
842         inventory_image = "xocean_fire.png",\r
843         groups = {snappy = 3},\r
844         selection_box = {\r
845                 type = "fixed",\r
846                 fixed = {\r
847                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
848                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
849                 },\r
850         },\r
851         drop = "xocean:fire_skeleton",\r
852         node_dig_prediction = "xocean:fire_block",\r
853         node_placement_prediction = "",\r
854         sounds = default.node_sound_stone_defaults({\r
855                 dig = {name = "default_dig_snappy", gain = 0.2},\r
856                 dug = {name = "default_grass_footstep", gain = 0.25},\r
857         }),\r
858 \r
859         on_place = function(itemstack, placer, pointed_thing)\r
860                 if pointed_thing.type ~= "node" or not placer then\r
861                         return itemstack\r
862                 end\r
863 \r
864                 local player_name = placer:get_player_name()\r
865                 local pos_under = pointed_thing.under\r
866                 local pos_above = pointed_thing.above\r
867 \r
868                 if minetest.get_node(pos_under).name ~= "xocean:fire_block" or\r
869                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
870                         return itemstack\r
871                 end\r
872 \r
873                 if minetest.is_protected(pos_under, player_name) or\r
874                                 minetest.is_protected(pos_above, player_name) then\r
875                         minetest.chat_send_player(player_name, "Node is protected")\r
876                         minetest.record_protection_violation(pos_under, player_name)\r
877                         return itemstack\r
878                 end\r
879 \r
880                 minetest.set_node(pos_under, {name = "xocean:fire"})\r
881                 if not (creative and creative.is_enabled_for(player_name)) then\r
882                         itemstack:take_item()\r
883                 end\r
884 \r
885                 return itemstack\r
886         end,\r
887 \r
888         after_destruct  = function(pos, oldnode)\r
889                 minetest.set_node(pos, {name = "xocean:fire_block"})\r
890         end,\r
891 })\r
892 minetest.override_item("default:coral_orange", {\r
893         description = "Fire Coral Block",\r
894         tiles = {"xocean_coral_fire.png"},\r
895         groups = {cracky = 3},\r
896         drop = "xocean:fire_skeleton",\r
897         sounds = default.node_sound_stone_defaults(),\r
898 })\r
899 minetest.register_node("xocean:skeleton_fire", {\r
900         description = "Fire Coral Skeleton",\r
901         drawtype = "plantlike_rooted",\r
902         waving = 1,\r
903         paramtype = "light",\r
904         tiles = {"xocean_coral_fire_skeleton.png"},\r
905         special_tiles = {{name = "xocean_fire_skeleton.png", tileable_vertical = true}},\r
906         inventory_image = "xocean_fire_skeleton.png",\r
907         groups = {snappy = 3},\r
908         selection_box = {\r
909                 type = "fixed",\r
910                 fixed = {\r
911                                 {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},\r
912                                 {-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},\r
913                 },\r
914         },\r
915         node_dig_prediction = "xocean:fire_skeleton",\r
916         node_placement_prediction = "",\r
917         sounds = default.node_sound_stone_defaults({\r
918                 dig = {name = "default_dig_snappy", gain = 0.2},\r
919                 dug = {name = "default_grass_footstep", gain = 0.25},\r
920         }),\r
921 \r
922         on_place = function(itemstack, placer, pointed_thing)\r
923                 if pointed_thing.type ~= "node" or not placer then\r
924                         return itemstack\r
925                 end\r
926 \r
927                 local player_name = placer:get_player_name()\r
928                 local pos_under = pointed_thing.under\r
929                 local pos_above = pointed_thing.above\r
930 \r
931                 if minetest.get_node(pos_under).name ~= "xocean:fire_skeleton" or\r
932                                 minetest.get_node(pos_above).name ~= "default:water_source" then\r
933                         return itemstack\r
934                 end\r
935 \r
936                 if minetest.is_protected(pos_under, player_name) or\r
937                                 minetest.is_protected(pos_above, player_name) then\r
938                         minetest.chat_send_player(player_name, "Node is protected")\r
939                         minetest.record_protection_violation(pos_under, player_name)\r
940                         return itemstack\r
941                 end\r
942 \r
943                 minetest.set_node(pos_under, {name = "xocean:skeleton_fire"})\r
944                 if not (creative and creative.is_enabled_for(player_name)) then\r
945                         itemstack:take_item()\r
946                 end\r
947 \r
948                 return itemstack\r
949         end,\r
950 \r
951         after_destruct  = function(pos, oldnode)\r
952                 minetest.set_node(pos, {name = "xocean:fire_skeleton"})\r
953         end,\r
954 })\r
955 ---Mapgen\r
956 minetest.register_decoration({\r
957                 name = "xocean:brain",\r
958                 deco_type = "schematic",\r
959                 place_on = {"default:sand"},\r
960                 place_offset_y = -1,\r
961                 sidelen = 2,\r
962                 noise_params = {\r
963                         offset = 0.0001,\r
964                         scale = 0.0001,\r
965                         spread = {x = 100000, y = 100000, z = 100000},\r
966                         seed = 87112,\r
967                         octaves = 20,\r
968                         persist = 0.7\r
969                 },\r
970                 biomes = {\r
971                         "taiga_ocean",\r
972                         "snowy_grassland_ocean",\r
973                         "grassland_ocean",\r
974                         "coniferous_forest_ocean",\r
975                         "deciduous_forest_ocean",\r
976                         "sandstone_desert_ocean",\r
977                         "cold_desert_ocean"},\r
978                 y_max = -10,\r
979                 y_min = -40,\r
980                 flags = "force_placement",\r
981                 schematic = "/schems/brain.mts",\r
982                 param2 = 48,\r
983                 param2_max = 96,\r
984         })\r
985 minetest.register_decoration({\r
986                 name = "xocean:horn",\r
987                 deco_type = "schematic",\r
988                 place_on = {"default:sand"},\r
989                 place_offset_y = -1,\r
990                 sidelen = 2,\r
991                 noise_params = {\r
992                         offset = 0.0001,\r
993                         scale = 0.0001,\r
994                         spread = {x = 100000, y = 100000, z = 100000},\r
995                         seed = 87112,\r
996                         octaves = 20,\r
997                         persist = 0.7\r
998                 },\r
999                 biomes = {\r
1000                         "taiga_ocean",\r
1001                         "snowy_grassland_ocean",\r
1002                         "grassland_ocean",\r
1003                         "coniferous_forest_ocean",\r
1004                         "deciduous_forest_ocean",\r
1005                         "sandstone_desert_ocean",\r
1006                         "cold_desert_ocean"},\r
1007                 y_max = -10,\r
1008                 y_min = -40,\r
1009                 flags = "force_placement",\r
1010                 schematic = "/schems/horn.mts",\r
1011                 param2 = 48,\r
1012                 param2_max = 96,\r
1013         })\r
1014 minetest.register_decoration({\r
1015                 name = "xocean:bubble",\r
1016                 deco_type = "schematic",\r
1017                 place_on = {"default:sand"},\r
1018                 place_offset_y = -1,\r
1019                 sidelen = 2,\r
1020                 noise_params = {\r
1021                         offset = 0.0001,\r
1022                         scale = 0.0001,\r
1023                         spread = {x = 100000, y = 100000, z = 100000},\r
1024                         seed = 87112,\r
1025                         octaves = 20,\r
1026                         persist = 0.7\r
1027                 },\r
1028                 biomes = {\r
1029                         "taiga_ocean",\r
1030                         "snowy_grassland_ocean",\r
1031                         "grassland_ocean",\r
1032                         "coniferous_forest_ocean",\r
1033                         "deciduous_forest_ocean",\r
1034                         "sandstone_desert_ocean",\r
1035                         "cold_desert_ocean"},\r
1036                 y_max = -10,\r
1037                 y_min = -40,\r
1038                 flags = "force_placement",\r
1039                 schematic = "/schems/bubble.mts",\r
1040                 param2 = 48,\r
1041                 param2_max = 96,\r
1042         })\r
1043 minetest.register_decoration({\r
1044                 name = "xocean:tube",\r
1045                 deco_type = "schematic",\r
1046                 place_on = {"default:sand"},\r
1047                 place_offset_y = -1,\r
1048                 sidelen = 2,\r
1049                 noise_params = {\r
1050                         offset = 0.0001,\r
1051                         scale = 0.0001,\r
1052                         spread = {x = 100000, y = 100000, z = 100000},\r
1053                         seed = 87112,\r
1054                         octaves = 20,\r
1055                         persist = 0.7\r
1056                 },\r
1057                 biomes = {\r
1058                         "taiga_ocean",\r
1059                         "snowy_grassland_ocean",\r
1060                         "grassland_ocean",\r
1061                         "coniferous_forest_ocean",\r
1062                         "deciduous_forest_ocean",\r
1063                         "sandstone_desert_ocean",\r
1064                         "cold_desert_ocean"},\r
1065                 y_max = -10,\r
1066                 y_min = -40,\r
1067                 flags = "force_placement",\r
1068                 schematic = "/schems/tube.mts",\r
1069                 param2 = 48,\r
1070                 param2_max = 96,\r
1071         })\r
1072 minetest.register_decoration({\r
1073                 name = "xocean:fire",\r
1074                 deco_type = "schematic",\r
1075                 place_on = {"default:sand"},\r
1076                 place_offset_y = -1,\r
1077                 sidelen = 2,\r
1078                 noise_params = {\r
1079                         offset = 0.0001,\r
1080                         scale = 0.0001,\r
1081                         spread = {x = 100000, y = 100000, z = 100000},\r
1082                         seed = 87112,\r
1083                         octaves = 20,\r
1084                         persist = 0.7\r
1085                 },\r
1086                 biomes = {\r
1087                         "taiga_ocean",\r
1088                         "snowy_grassland_ocean",\r
1089                         "grassland_ocean",\r
1090                         "coniferous_forest_ocean",\r
1091                         "deciduous_forest_ocean",\r
1092                         "sandstone_desert_ocean",\r
1093                         "cold_desert_ocean"},\r
1094                 y_max = -10,\r
1095                 y_min = -40,\r
1096                 flags = "force_placement",\r
1097                 schematic = "/schems/fire.mts",\r
1098                 param2 = 48,\r
1099                 param2_max = 96,\r
1100         })\r
1101 minetest.register_decoration({\r
1102                 name = "xocean:brain2",\r
1103                 deco_type = "schematic",\r
1104                 place_on = {"default:sand"},\r
1105                 place_offset_y = -1,\r
1106                 sidelen = 2,\r
1107                 noise_params = {\r
1108                         offset = 0.0001,\r
1109                         scale = 0.001,\r
1110                         spread = {x = 100000, y = 100000, z = 100000},\r
1111                         seed = 87112,\r
1112                         octaves = 28,\r
1113                         persist = 0.7\r
1114                 },\r
1115                 biomes = {\r
1116                         "taiga_ocean",\r
1117                         "snowy_grassland_ocean",\r
1118                         "grassland_ocean",\r
1119                         "coniferous_forest_ocean",\r
1120                         "deciduous_forest_ocean",\r
1121                         "sandstone_desert_ocean",\r
1122                         "cold_desert_ocean"},\r
1123                 y_max = -10,\r
1124                 y_min = -40,\r
1125                 flags = "force_placement",\r
1126                 schematic = "/schems/brain2.mts",\r
1127                 param2 = 48,\r
1128                 param2_max = 96,\r
1129         })\r
1130 minetest.register_decoration({\r
1131                 name = "xocean:horn2",\r
1132                 deco_type = "schematic",\r
1133                 place_on = {"default:sand"},\r
1134                 place_offset_y = -1,\r
1135                 sidelen = 2,\r
1136                 noise_params = {\r
1137                         offset = 0.0001,\r
1138                         scale = 0.001,\r
1139                         spread = {x = 100000, y = 100000, z = 100000},\r
1140                         seed = 87112,\r
1141                         octaves = 28,\r
1142                         persist = 0.7\r
1143                 },\r
1144                 biomes = {\r
1145                         "taiga_ocean",\r
1146                         "snowy_grassland_ocean",\r
1147                         "grassland_ocean",\r
1148                         "coniferous_forest_ocean",\r
1149                         "deciduous_forest_ocean",\r
1150                         "sandstone_desert_ocean",\r
1151                         "cold_desert_ocean"},\r
1152                 y_max = -10,\r
1153                 y_min = -40,\r
1154                 flags = "force_placement",\r
1155                 schematic = "/schems/horn2.mts",\r
1156                 param2 = 48,\r
1157                 param2_max = 96,\r
1158         })\r
1159 minetest.register_decoration({\r
1160                 name = "xocean:bubble2",\r
1161                 deco_type = "schematic",\r
1162                 place_on = {"default:sand"},\r
1163                 place_offset_y = -1,\r
1164                 sidelen = 2,\r
1165                 noise_params = {\r
1166                         offset = 0.0001,\r
1167                         scale = 0.001,\r
1168                         spread = {x = 100000, y = 100000, z = 100000},\r
1169                         seed = 87112,\r
1170                         octaves = 28,\r
1171                         persist = 0.7\r
1172                 },\r
1173                 biomes = {\r
1174                         "taiga_ocean",\r
1175                         "snowy_grassland_ocean",\r
1176                         "grassland_ocean",\r
1177                         "coniferous_forest_ocean",\r
1178                         "deciduous_forest_ocean",\r
1179                         "sandstone_desert_ocean",\r
1180                         "cold_desert_ocean"},\r
1181                 y_max = -10,\r
1182                 y_min = -40,\r
1183                 flags = "force_placement",\r
1184                 schematic = "/schems/bubble2.mts",\r
1185                 param2 = 48,\r
1186                 param2_max = 96,\r
1187         })\r
1188 minetest.register_decoration({\r
1189                 name = "xocean:tube2",\r
1190                 deco_type = "schematic",\r
1191                 place_on = {"default:sand"},\r
1192                 place_offset_y = -1,\r
1193                 sidelen = 2,\r
1194                 noise_params = {\r
1195                         offset = 0.0001,\r
1196                         scale = 0.001,\r
1197                         spread = {x = 100000, y = 100000, z = 100000},\r
1198                         seed = 87112,\r
1199                         octaves = 28,\r
1200                         persist = 0.7\r
1201                 },\r
1202                 biomes = {\r
1203                         "taiga_ocean",\r
1204                         "snowy_grassland_ocean",\r
1205                         "grassland_ocean",\r
1206                         "coniferous_forest_ocean",\r
1207                         "deciduous_forest_ocean",\r
1208                         "sandstone_desert_ocean",\r
1209                         "cold_desert_ocean"},\r
1210                 y_max = -10,\r
1211                 y_min = -40,\r
1212                 flags = "force_placement",\r
1213                 schematic = "/schems/tube2.mts",\r
1214                 param2 = 48,\r
1215                 param2_max = 96,\r
1216         })\r
1217 minetest.register_decoration({\r
1218                 name = "xocean:fire2",\r
1219                 deco_type = "schematic",\r
1220                 place_on = {"default:sand"},\r
1221                 place_offset_y = -1,\r
1222                 sidelen = 2,\r
1223                 noise_params = {\r
1224                         offset = 0.0001,\r
1225                         scale = 0.001,\r
1226                         spread = {x = 100000, y = 100000, z = 100000},\r
1227                         seed = 87112,\r
1228                         octaves = 12,\r
1229                         persist = 0.7\r
1230                 },\r
1231                 biomes = {\r
1232                         "taiga_ocean",\r
1233                         "snowy_grassland_ocean",\r
1234                         "grassland_ocean",\r
1235                         "coniferous_forest_ocean",\r
1236                         "deciduous_forest_ocean",\r
1237                         "sandstone_desert_ocean",\r
1238                         "cold_desert_ocean"},\r
1239                 y_max = -10,\r
1240                 y_min = -40,\r
1241                 flags = "force_placement",\r
1242                 schematic = "/schems/fire2.mts",\r
1243                 param2 = 48,\r
1244                 param2_max = 96,\r
1245         })\r
1246 minetest.register_decoration({\r
1247                 name = "xocean:tube3",\r
1248                 deco_type = "schematic",\r
1249                 place_on = {"default:sand"},\r
1250                 place_offset_y = -1,\r
1251                 sidelen = 1  ,\r
1252                 noise_params = {\r
1253                         offset = 0.0001,\r
1254                         scale = 0.000001,\r
1255                         spread = {x = 100000, y = 100000, z = 100000},\r
1256                         seed = 87112,\r
1257                         octaves = 20,\r
1258                         persist = 0.7\r
1259                 },\r
1260                 biomes = {\r
1261                         "taiga_ocean",\r
1262                         "snowy_grassland_ocean",\r
1263                         "grassland_ocean",\r
1264                         "coniferous_forest_ocean",\r
1265                         "deciduous_forest_ocean",\r
1266                         "sandstone_desert_ocean",\r
1267                         "cold_desert_ocean"},\r
1268                 y_max = -10,\r
1269                 y_min = -40,\r
1270                 flags = "force_placement",\r
1271                 schematic = "/schems/tube3.mts",\r
1272                 param2 = 48,\r
1273                 param2_max = 96,\r
1274         })\r
1275 minetest.register_decoration({\r
1276                 name = "xocean:brain3",\r
1277                 deco_type = "schematic",\r
1278                 place_on = {"default:sand"},\r
1279                 place_offset_y = -1,\r
1280                 sidelen = 1,\r
1281                 noise_params = {\r
1282                         offset = 0.0001,\r
1283                         scale = 0.000001,\r
1284                         spread = {x = 100000, y = 100000, z = 100000},\r
1285                         seed = 87112,\r
1286                         octaves = 25,\r
1287                         persist = 0.7\r
1288                 },\r
1289                 biomes = {\r
1290                         "taiga_ocean",\r
1291                         "snowy_grassland_ocean",\r
1292                         "grassland_ocean",\r
1293                         "coniferous_forest_ocean",\r
1294                         "deciduous_forest_ocean",\r
1295                         "sandstone_desert_ocean",\r
1296                         "cold_desert_ocean"},\r
1297                 y_max = -10,\r
1298                 y_min = -40,\r
1299                 flags = "force_placement",\r
1300                 schematic = "/schems/brain3.mts",\r
1301                 param2 = 48,\r
1302                 param2_max = 96,\r
1303         })\r
1304 minetest.register_decoration({\r
1305                 name = "xocean:brain4",\r
1306                 deco_type = "schematic",\r
1307                 place_on = {"default:sand"},\r
1308                 place_offset_y = -1,\r
1309                 sidelen = 1,\r
1310                 noise_params = {\r
1311                         offset = 0.0001,\r
1312                         scale = 0.0000001,\r
1313                         spread = {x = 100000, y = 100000, z = 100000},\r
1314                         seed = 87112,\r
1315                         octaves = 25,\r
1316                         persist = 0.7\r
1317                 },\r
1318                 biomes = {\r
1319                         "taiga_ocean",\r
1320                         "snowy_grassland_ocean",\r
1321                         "grassland_ocean",\r
1322                         "coniferous_forest_ocean",\r
1323                         "deciduous_forest_ocean",\r
1324                         "sandstone_desert_ocean",\r
1325                         "cold_desert_ocean"},\r
1326                 y_max = -15,\r
1327                 y_min = -40,\r
1328                 flags = "force_placement",\r
1329                 schematic = "/schems/brain4.mts",\r
1330                 param2 = 48,\r
1331                 param2_max = 96,\r
1332         })\r
1333         minetest.register_decoration({\r
1334                 name = "xocean:seagrass",\r
1335                 deco_type = "simple",\r
1336                 place_on = {"default:sand"},\r
1337                 place_offset_y = -1,\r
1338                 sidelen = 16,\r
1339                 noise_params = {\r
1340                         offset = -0.04,\r
1341                         scale = 0.4,\r
1342                         spread = {x = 200, y = 200, z = 200},\r
1343                         seed = 87112,\r
1344                         octaves = 3,\r
1345                         persist = 0.7\r
1346                 },\r
1347                 biomes = {\r
1348                         "taiga_ocean",\r
1349                         "snowy_grassland_ocean",\r
1350                         "grassland_ocean",\r
1351                         "coniferous_forest_ocean",\r
1352                         "deciduous_forest_ocean",\r
1353                         "sandstone_desert_ocean",\r
1354                         "cold_desert_ocean"},\r
1355                 y_max = -5,\r
1356                 y_min = -50,\r
1357                 flags = "force_placement",\r
1358                 decoration = "xocean:seagrass",\r
1359                 param2 = 48,\r
1360                 param2_max = 96,\r
1361         })\r
1362         minetest.register_decoration({\r
1363                 name = "xocean:fire_plant_dead",\r
1364                 deco_type = "simple",\r
1365                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1366                 place_offset_y = -1,\r
1367                 sidelen = 16,\r
1368                 noise_params = {\r
1369                         offset = -0.04,\r
1370                         scale = 1.0,\r
1371                         spread = {x = 20, y = 20, z = 20},\r
1372                         seed = 87112,\r
1373                         octaves = 3,\r
1374                         persist = 0.7\r
1375                 },\r
1376                 biomes = {\r
1377                         "taiga_ocean",\r
1378                         "snowy_grassland_ocean",\r
1379                         "grassland_ocean",\r
1380                         "coniferous_forest_ocean",\r
1381                         "deciduous_forest_ocean",\r
1382                         "sandstone_desert_ocean",\r
1383                         "cold_desert_ocean"},\r
1384                 y_max = -5,\r
1385                 y_min = -50,\r
1386                 flags = "force_placement",\r
1387                 decoration = "xocean:skeleton_fire",\r
1388                 param2 = 48,\r
1389                 param2_max = 96,\r
1390         })\r
1391         minetest.register_decoration({\r
1392                 name = "xocean:horn_plant_dead",\r
1393                 deco_type = "simple",\r
1394                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1395                 place_offset_y = -1,\r
1396                 sidelen = 16,\r
1397                 noise_params = {\r
1398                         offset = -0.04,\r
1399                         scale = 1.0,\r
1400                         spread = {x = 20, y = 20, z = 20},\r
1401                         seed = 87112,\r
1402                         octaves = 3,\r
1403                         persist = 0.7\r
1404                 },\r
1405                 biomes = {\r
1406                         "taiga_ocean",\r
1407                         "snowy_grassland_ocean",\r
1408                         "grassland_ocean",\r
1409                         "coniferous_forest_ocean",\r
1410                         "deciduous_forest_ocean",\r
1411                         "sandstone_desert_ocean",\r
1412                         "cold_desert_ocean"},\r
1413                 y_max = -5,\r
1414                 y_min = -50,\r
1415                 flags = "force_placement",\r
1416                 decoration = "xocean:skeleton_horn",\r
1417                 param2 = 48,\r
1418                 param2_max = 96,\r
1419         })\r
1420         minetest.register_decoration({\r
1421                 name = "xocean:bubble_plant_skeleton",\r
1422                 deco_type = "simple",\r
1423                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1424                 place_offset_y = -1,\r
1425                 sidelen = 16,\r
1426                 noise_params = {\r
1427                         offset = -0.04,\r
1428                         scale = 1.0,\r
1429                         spread = {x = 20, y = 20, z = 20},\r
1430                         seed = 87112,\r
1431                         octaves = 3,\r
1432                         persist = 0.7\r
1433                 },\r
1434                 biomes = {\r
1435                         "taiga_ocean",\r
1436                         "snowy_grassland_ocean",\r
1437                         "grassland_ocean",\r
1438                         "coniferous_forest_ocean",\r
1439                         "deciduous_forest_ocean",\r
1440                         "sandstone_desert_ocean",\r
1441                         "cold_desert_ocean"},\r
1442                 y_max = -5,\r
1443                 y_min = -50,\r
1444                 flags = "force_placement",\r
1445                 decoration = "xocean:skeleton_bubble",\r
1446                 param2 = 48,\r
1447                 param2_max = 96,\r
1448         })\r
1449         minetest.register_decoration({\r
1450                 name = "xocean:brain_plant_skeleton",\r
1451                 deco_type = "simple",\r
1452                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1453                 place_offset_y = -1,\r
1454                 sidelen = 16,\r
1455                 noise_params = {\r
1456                         offset = -0.04,\r
1457                         scale = 1.0,\r
1458                         spread = {x = 20, y = 20, z = 20},\r
1459                         seed = 87112,\r
1460                         octaves = 3,\r
1461                         persist = 0.7\r
1462                 },\r
1463                 biomes = {\r
1464                         "taiga_ocean",\r
1465                         "snowy_grassland_ocean",\r
1466                         "grassland_ocean",\r
1467                         "coniferous_forest_ocean",\r
1468                         "deciduous_forest_ocean",\r
1469                         "sandstone_desert_ocean",\r
1470                         "cold_desert_ocean"},\r
1471                 y_max = -5,\r
1472                 y_min = -50,\r
1473                 flags = "force_placement",\r
1474                 decoration = "xocean:skeleton_brain",\r
1475                 param2 = 48,\r
1476                 param2_max = 96,\r
1477         })\r
1478         minetest.register_decoration({\r
1479                 name = "xocean:tube_plant",\r
1480                 deco_type = "simple",\r
1481                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1482                 place_offset_y = -1,\r
1483                 sidelen = 16,\r
1484                 noise_params = {\r
1485                         offset = -0.04,\r
1486                         scale = 1.0,\r
1487                         spread = {x = 20, y = 20, z = 20},\r
1488                         seed = 87112,\r
1489                         octaves = 3,\r
1490                         persist = 0.7\r
1491                 },\r
1492                 biomes = {\r
1493                         "taiga_ocean",\r
1494                         "snowy_grassland_ocean",\r
1495                         "grassland_ocean",\r
1496                         "coniferous_forest_ocean",\r
1497                         "deciduous_forest_ocean",\r
1498                         "sandstone_desert_ocean",\r
1499                         "cold_desert_ocean"},\r
1500                 y_max = -5,\r
1501                 y_min = -50,\r
1502                 flags = "force_placement",\r
1503                 decoration = "xocean:skeleton_tube",\r
1504                 param2 = 48,\r
1505                 param2_max = 96,\r
1506         })\r
1507         minetest.register_decoration({\r
1508                 name = "xocean:fire_plant",\r
1509                 deco_type = "simple",\r
1510                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1511                 place_offset_y = -1,\r
1512                 sidelen = 16,\r
1513                 noise_params = {\r
1514                         offset = -0.04,\r
1515                         scale = 1.0,\r
1516                         spread = {x = 20, y = 20, z = 20},\r
1517                         seed = 87112,\r
1518                         octaves = 3,\r
1519                         persist = 0.7\r
1520                 },\r
1521                 biomes = {\r
1522                         "taiga_ocean",\r
1523                         "snowy_grassland_ocean",\r
1524                         "grassland_ocean",\r
1525                         "coniferous_forest_ocean",\r
1526                         "deciduous_forest_ocean",\r
1527                         "sandstone_desert_ocean",\r
1528                         "cold_desert_ocean"},\r
1529                 y_max = -5,\r
1530                 y_min = -50,\r
1531                 flags = "force_placement",\r
1532                 decoration = "xocean:fire",\r
1533                 param2 = 48,\r
1534                 param2_max = 96,\r
1535         })\r
1536         minetest.register_decoration({\r
1537                 name = "xocean:horn_plant",\r
1538                 deco_type = "simple",\r
1539                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1540                 place_offset_y = -1,\r
1541                 sidelen = 16,\r
1542                 noise_params = {\r
1543                         offset = -0.04,\r
1544                         scale = 1.0,\r
1545                         spread = {x = 20, y = 20, z = 20},\r
1546                         seed = 87112,\r
1547                         octaves = 3,\r
1548                         persist = 0.7\r
1549                 },\r
1550                 biomes = {\r
1551                         "taiga_ocean",\r
1552                         "snowy_grassland_ocean",\r
1553                         "grassland_ocean",\r
1554                         "coniferous_forest_ocean",\r
1555                         "deciduous_forest_ocean",\r
1556                         "sandstone_desert_ocean",\r
1557                         "cold_desert_ocean"},\r
1558                 y_max = -5,\r
1559                 y_min = -50,\r
1560                 flags = "force_placement",\r
1561                 decoration = "xocean:horn",\r
1562                 param2 = 48,\r
1563                 param2_max = 96,\r
1564         })\r
1565         minetest.register_decoration({\r
1566                 name = "xocean:bubble_plant",\r
1567                 deco_type = "simple",\r
1568                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1569                 place_offset_y = -1,\r
1570                 sidelen = 16,\r
1571                 noise_params = {\r
1572                         offset = -0.04,\r
1573                         scale = 1.0,\r
1574                         spread = {x = 20, y = 20, z = 20},\r
1575                         seed = 87112,\r
1576                         octaves = 3,\r
1577                         persist = 0.7\r
1578                 },\r
1579                 biomes = {\r
1580                         "taiga_ocean",\r
1581                         "snowy_grassland_ocean",\r
1582                         "grassland_ocean",\r
1583                         "coniferous_forest_ocean",\r
1584                         "deciduous_forest_ocean",\r
1585                         "sandstone_desert_ocean",\r
1586                         "cold_desert_ocean"},\r
1587                 y_max = -5,\r
1588                 y_min = -50,\r
1589                 flags = "force_placement",\r
1590                 decoration = "xocean:bubble",\r
1591                 param2 = 48,\r
1592                 param2_max = 96,\r
1593         })\r
1594         minetest.register_decoration({\r
1595                 name = "xocean:brain_plant",\r
1596                 deco_type = "simple",\r
1597                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1598                 place_offset_y = -1,\r
1599                 sidelen = 16,\r
1600                 noise_params = {\r
1601                         offset = -0.04,\r
1602                         scale = 1.0,\r
1603                         spread = {x = 20, y = 20, z = 20},\r
1604                         seed = 87112,\r
1605                         octaves = 3,\r
1606                         persist = 0.7\r
1607                 },\r
1608                 biomes = {\r
1609                         "taiga_ocean",\r
1610                         "snowy_grassland_ocean",\r
1611                         "grassland_ocean",\r
1612                         "coniferous_forest_ocean",\r
1613                         "deciduous_forest_ocean",\r
1614                         "sandstone_desert_ocean",\r
1615                         "cold_desert_ocean"},\r
1616                 y_max = -5,\r
1617                 y_min = -50,\r
1618                 flags = "force_placement",\r
1619                 decoration = "default:coral_pink",\r
1620                 param2 = 48,\r
1621                 param2_max = 96,\r
1622         })\r
1623         minetest.register_decoration({\r
1624                 name = "xocean:tube_plant",\r
1625                 deco_type = "simple",\r
1626                 place_on = {"xocean:brain_block","xocean:tube_block","default:coral_orange","default:coral_brown","xocean:bubble_block"},\r
1627                 place_offset_y = -1,\r
1628                 sidelen = 16,\r
1629                 noise_params = {\r
1630                         offset = -0.04,\r
1631                         scale = 1.0,\r
1632                         spread = {x = 20, y = 20, z = 20},\r
1633                         seed = 87112,\r
1634                         octaves = 3,\r
1635                         persist = 0.7\r
1636                 },\r
1637                 biomes = {\r
1638                         "taiga_ocean",\r
1639                         "snowy_grassland_ocean",\r
1640                         "grassland_ocean",\r
1641                         "coniferous_forest_ocean",\r
1642                         "deciduous_forest_ocean",\r
1643                         "sandstone_desert_ocean",\r
1644                         "cold_desert_ocean"},\r
1645                 y_max = -5,\r
1646                 y_min = -50,\r
1647                 flags = "force_placement",\r
1648                 decoration = "default:coral_cyan",\r
1649                 param2 = 48,\r
1650                 param2_max = 96,\r
1651         })\r
1652         minetest.register_decoration({\r
1653                 name = "xocean:pickle",\r
1654                 deco_type = "simple",\r
1655                 place_on = {"default:sand"},\r
1656                 place_offset_y = -1,\r
1657                 sidelen = 16,\r
1658                 noise_params = {\r
1659                         offset = -0.04,\r
1660                         scale = 0.04,\r
1661                         spread = {x = 200, y = 200, z = 200},\r
1662                         seed = 87112,\r
1663                         octaves = 3,\r
1664                         persist = 0.7\r
1665                 },\r
1666                 biomes = {\r
1667                         "taiga_ocean",\r
1668                         "snowy_grassland_ocean",\r
1669                         "grassland_ocean",\r
1670                         "coniferous_forest_ocean",\r
1671                         "deciduous_forest_ocean",\r
1672                         "sandstone_desert_ocean",\r
1673                         "cold_desert_ocean"},\r
1674                 y_max = -8,\r
1675                 y_min = -50,\r
1676                 flags = "force_placement",\r
1677                 decoration = "xocean:pickle",\r
1678                 param2 = 48,\r
1679                 param2_max = 96,\r
1680         })\r
1681 ---Mobs\r
1682 if minetest.get_modpath("mobs") then\r
1683 local l_water_level             = minetest.setting_get("water_level") - 2\r
1684         mobs:register_mob("xocean:dolphin", {\r
1685                 type = "animal",\r
1686                 attack_type = "dogfight",\r
1687                 damage = 1,\r
1688                 visual_size = {x = 15, y = 15, z= 15},\r
1689                 reach = 3,\r
1690                 hp_min = 20,\r
1691                 hp_max = 20,\r
1692                 armor = 100,\r
1693                 collisionbox = {-0.75, -0.5, -0.75, 0.75, 0.5, 0.75},\r
1694                 visual = "mesh",\r
1695                 mesh = "dolphin.b3d",\r
1696                 textures = {\r
1697                         {"mobs_dolphin.png"}\r
1698                 },\r
1699                 drops = {\r
1700         {name = "mobs:meat_raw", chance = 1, min = 2, max = 4},\r
1701     },\r
1702                 makes_footstep_sound = false,\r
1703                 walk_velocity = 4,\r
1704                 run_velocity = 6,\r
1705                 fly = true,\r
1706                 fly_in = "default:water_source",\r
1707                 fall_speed = 0,\r
1708                 rotate = 90,\r
1709                 view_range = 30,\r
1710                 water_damage = 0,\r
1711                 lava_damage = 10,\r
1712                 light_damage = 0,\r
1713                 animation = {\r
1714                         speed_normal = 15,\r
1715             speed_run = 25,\r
1716                         stand_start = 40,\r
1717                         stand_end = 100,\r
1718             walk_start = 40,\r
1719             walk_end = 100,\r
1720             run_start = 40,\r
1721             run_end = 100,\r
1722                 },\r
1723         })\r
1724         mobs:spawn_specific("xocean:dolphin",   {"default:water_source"},       {"default:water_flowing","default:water_source"},       5, 20, 30, 10000, 2, -31000, l_water_level)\r
1725         mobs:register_egg("xocean:dolphin", "Dolphin", "xocean_stone.png", 1)\r
1726         \r
1727         mobs:register_mob("xocean:fish", {\r
1728                 type = "animal",\r
1729                 hp_min = 5,\r
1730                 hp_max = 5,\r
1731                 armor = 100,\r
1732                 visual_size = {x = 2, y = 2, z= 2},\r
1733                 collisionbox = {-0.25, -0.2, -0.25, 0.25, 0.2, 0.25},\r
1734                 visual = "mesh",\r
1735                 mesh = "fishy.b3d",\r
1736                 textures = {\r
1737                         {"mobs_fishy.png"},\r
1738                         {"mobs_fishy1.png"},\r
1739                         {"mobs_fishy2.png"},\r
1740                         {"mobs_fishy3.png"}\r
1741                 },\r
1742                 drops = {\r
1743         {name = "xocean:fish_edible", chance = 1, min = 1, max = 1},\r
1744     },\r
1745                 makes_footstep_sound = false,\r
1746                 walk_velocity = 2,\r
1747                 run_velocity = 3,\r
1748                 fly = true,\r
1749                 fly_in = "default:water_source",\r
1750                 fall_speed = 0,\r
1751                 view_range = 30,\r
1752                 water_damage = 0,\r
1753                 lava_damage = 10,\r
1754                 light_damage = 0,\r
1755                 animation = {\r
1756                         speed_normal = 15,\r
1757             speed_run = 25,\r
1758                         stand_start = 40,\r
1759                         stand_end = 100,\r
1760             walk_start = 40,\r
1761             walk_end = 100,\r
1762             run_start = 40,\r
1763             run_end = 100,\r
1764                 },\r
1765         })\r
1766         mobs:spawn_specific("xocean:fish",      {"default:water_source"},       {"default:water_flowing","default:water_source"},       2, 20, 30, 10000, 5, -31000, l_water_level)\r
1767         mobs:register_egg("xocean:fish", "Tropical Fish (Kob)", "xocean_fish.png", 0)\r
1768 mobs:register_mob("xocean:fish2", {\r
1769                 type = "animal",\r
1770                 hp_min = 5,\r
1771                 hp_max = 5,\r
1772                 armor = 100,\r
1773                 visual_size = {x = 2, y = 2, z= 2},\r
1774                 collisionbox = {-0.25, -0.2, -0.25, 0.25, 0.2, 0.25},\r
1775                 visual = "mesh",\r
1776                 mesh = "fishy.b3d",\r
1777                 textures = {\r
1778                         {"mobs_fishy4.png"},\r
1779                         {"mobs_fishy5.png"},\r
1780                         {"mobs_fishy6.png"}\r
1781                 },\r
1782                 drops = {\r
1783         {name = "xocean:fish_edible", chance = 2, min = 1, max = 2},\r
1784     },\r
1785                 makes_footstep_sound = false,\r
1786                 walk_velocity = 2,\r
1787                 run_velocity = 3,\r
1788                 fly = true,\r
1789                 fly_in = "default:water_source",\r
1790                 fall_speed = 0,\r
1791                 view_range = 30,\r
1792                 water_damage = 0,\r
1793                 lava_damage = 10,\r
1794                 light_damage = 0,\r
1795                 animation = {\r
1796                         speed_normal = 15,\r
1797             speed_run = 25,\r
1798                         stand_start = 40,\r
1799                         stand_end = 100,\r
1800             walk_start = 40,\r
1801             walk_end = 100,\r
1802             run_start = 40,\r
1803             run_end = 100,\r
1804                 },\r
1805         })\r
1806         mobs:spawn_specific("xocean:fish2",     {"default:water_source"},       {"default:water_flowing","default:water_source"},       2, 20, 30, 10000, 5, -31000, l_water_level)\r
1807         mobs:register_egg("xocean:fish2", "Tropical Fish (SunStreak)", "xocean_fish2.png", 0)\r
1808 mobs:register_mob("xocean:fish3", {\r
1809                 type = "animal",\r
1810                 hp_min = 5,\r
1811                 hp_max = 5,\r
1812                 armor = 100,\r
1813                 visual_size = {x = 2, y = 2, z= 2},\r
1814                 collisionbox = {-0.25, -0.2, -0.25, 0.25, 0.2, 0.25},\r
1815                 visual = "mesh",\r
1816                 mesh = "fishy.b3d",\r
1817                 textures = {\r
1818                         {"mobs_fishy7.png"},\r
1819                         {"mobs_fishy8.png"},\r
1820                         {"mobs_fishy9.png"}\r
1821                 },\r
1822                 drops = {\r
1823         {name = "xocean:fish_edible", chance = 2, min = 1, max = 2},\r
1824     },\r
1825                 makes_footstep_sound = false,\r
1826                 walk_velocity = 2,\r
1827                 run_velocity = 3,\r
1828                 fly = true,\r
1829                 fly_in = "default:water_source",\r
1830                 fall_speed = 0,\r
1831                 view_range = 30,\r
1832                 water_damage = 0,\r
1833                 lava_damage = 10,\r
1834                 light_damage = 0,\r
1835                 animation = {\r
1836                         speed_normal = 15,\r
1837             speed_run = 25,\r
1838                         stand_start = 40,\r
1839                         stand_end = 100,\r
1840             walk_start = 40,\r
1841             walk_end = 100,\r
1842             run_start = 40,\r
1843             run_end = 100,\r
1844                 },\r
1845         })\r
1846         mobs:spawn_specific("xocean:fish3",     {"default:water_source"},       {"default:water_flowing","default:water_source"},       2, 20, 30, 10000, 5, -31000, l_water_level)\r
1847         mobs:register_egg("xocean:fish3", "Tropical Fish (Dasher)", "xocean_fish3.png", 0)\r
1848 end