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