1 minetest.register_node("xocean:ocean_cobble", {
\r
2 description = "Ocean Cobblestone",
\r
3 tile_images = {"xocean_cobble.png"},
\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
14 minetest.register_craft({
\r
16 output = "xocean:ocean_stone",
\r
17 recipe = "xocean:ocean_cobble",
\r
20 minetest.register_ore({
\r
22 ore = "xocean:ocean_stone",
\r
23 wherein = {"default:sand"},
\r
24 clust_scarcity = 32 * 32 * 32,
\r
28 noise_threshold = 0.0,
\r
32 spread = {x = 8, y = 5, z = 8},
\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
45 minetest.register_craft({
\r
46 output = '"xocean:ocean_carved" 4',
\r
48 {'xocean:ocean_stone', 'xocean:ocean_stone',},
\r
49 {'xocean:ocean_stone', 'xocean:ocean_stone',},
\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
59 minetest.register_craft({
\r
60 output = '"xocean:ocean_circular" 4',
\r
62 {'xocean:ocean_carved', 'xocean:ocean_carved',},
\r
63 {'xocean:ocean_carved', 'xocean:ocean_carved',},
\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
73 minetest.register_craft({
\r
74 output = '"xocean:ocean_pillar" 4',
\r
76 {'xocean:ocean_brick', 'xocean:ocean_brick',},
\r
77 {'xocean:ocean_brick', 'xocean:ocean_brick',},
\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
87 minetest.register_craft({
\r
88 output = '"xocean:ocean_brick" 4',
\r
90 {'xocean:ocean_cobble', 'xocean:ocean_cobble',},
\r
91 {'xocean:ocean_cobble', 'xocean:ocean_cobble',},
\r
95 minetest.register_node("xocean:sea_lantern", {
\r
96 description = "Sea Lantern",
\r
97 drawtype = "glasslike",
\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
107 minetest.register_craft({
\r
108 output = '"xocean:sea_lantern" 4',
\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
114 replacements = {{ "bucket:bucket_water", "bucket:bucket_empty"}}
\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
123 minetest.register_craft({
\r
124 output = '"xocean:kelp_block" 1',
\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
131 minetest.override_item("default:sand_with_kelp", {
\r
132 description = "Kelp",
\r
133 drawtype = "plantlike_rooted",
\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
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
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
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
168 local pos = pointed_thing.under
\r
169 if minetest.get_node(pos).name ~= "default:sand" then
\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
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
190 minetest.chat_send_player(player_name, "Node is protected")
\r
191 minetest.record_protection_violation(pos, player_name)
\r
198 after_destruct = function(pos, oldnode)
\r
199 minetest.set_node(pos, {name = "default:sand"})
\r
202 minetest.register_craft({
\r
204 output = "xocean:kelp",
\r
205 recipe = "default:sand_with_kelp",
\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
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
217 minetest.register_craft({
\r
218 output = '"xocean:sushi" 1',
\r
220 {'xocean:fish_edible'},
\r
224 minetest.register_node("xocean:seagrass", {
\r
225 description = "Seagrass",
\r
226 drawtype = "plantlike_rooted",
\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
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
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
247 on_place = function(itemstack, placer, pointed_thing)
\r
248 if pointed_thing.type ~= "node" or not placer then
\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
256 if minetest.get_node(pos_under).name ~= "default:sand" or
\r
257 minetest.get_node(pos_above).name ~= "default:water_source" then
\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
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
276 after_destruct = function(pos, oldnode)
\r
277 minetest.set_node(pos, {name = "default:sand"})
\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
285 minetest.register_node("xocean:pickle", {
\r
286 description = "Sea Pickle",
\r
287 drawtype = "plantlike_rooted",
\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
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
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
309 on_place = function(itemstack, placer, pointed_thing)
\r
310 if pointed_thing.type ~= "node" or not placer then
\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
318 if minetest.get_node(pos_under).name ~= "default:sand" or
\r
319 minetest.get_node(pos_above).name ~= "default:water_source" then
\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
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
338 after_destruct = function(pos, oldnode)
\r
339 minetest.set_node(pos, {name = "default:sand"})
\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
350 minetest.override_item("default:coral_pink", {
\r
351 description = "Brain Coral",
\r
352 drawtype = "plantlike_rooted",
\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
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
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
373 on_place = function(itemstack, placer, pointed_thing)
\r
374 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
402 after_destruct = function(pos, oldnode)
\r
403 minetest.set_node(pos, {name = "xocean:brain_block"})
\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
412 minetest.register_node("xocean:skeleton_brain", {
\r
413 description = "Brain Coral Skeleton",
\r
414 drawtype = "plantlike_rooted",
\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
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
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
435 on_place = function(itemstack, placer, pointed_thing)
\r
436 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
464 after_destruct = function(pos, oldnode)
\r
465 minetest.set_node(pos, {name = "xocean:brain_skeleton"})
\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
475 minetest.override_item("default:coral_cyan", {
\r
476 description = "Tube Coral",
\r
477 drawtype = "plantlike_rooted",
\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
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
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
499 on_place = function(itemstack, placer, pointed_thing)
\r
500 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
528 after_destruct = function(pos, oldnode)
\r
529 minetest.set_node(pos, {name = "xocean:tube_block"})
\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
538 minetest.register_node("xocean:skeleton_tube", {
\r
539 description = "Tube Coral Skeleton",
\r
540 drawtype = "plantlike_rooted",
\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
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
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
561 on_place = function(itemstack, placer, pointed_thing)
\r
562 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
590 after_destruct = function(pos, oldnode)
\r
591 minetest.set_node(pos, {name = "xocean:tube_skeleton"})
\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
601 minetest.register_node("xocean:bubble", {
\r
602 description = "Bubble Coral",
\r
603 drawtype = "plantlike_rooted",
\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
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
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
625 on_place = function(itemstack, placer, pointed_thing)
\r
626 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
654 after_destruct = function(pos, oldnode)
\r
655 minetest.set_node(pos, {name = "xocean:bubble_block"})
\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
664 minetest.register_node("xocean:skeleton_bubble", {
\r
665 description = "Bubble Coral Skeleton",
\r
666 drawtype = "plantlike_rooted",
\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
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
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
688 on_place = function(itemstack, placer, pointed_thing)
\r
689 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
717 after_destruct = function(pos, oldnode)
\r
718 minetest.set_node(pos, {name = "xocean:bubble_skeleton"})
\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
728 minetest.register_node("xocean:horn", {
\r
729 description = "Horn Coral",
\r
730 drawtype = "plantlike_rooted",
\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
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
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
752 on_place = function(itemstack, placer, pointed_thing)
\r
753 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
781 after_destruct = function(pos, oldnode)
\r
782 minetest.set_node(pos, {name = "default:coral_brown"})
\r
785 minetest.register_node("xocean:skeleton_horn", {
\r
786 description = "Horn Coral Skeleton",
\r
787 drawtype = "plantlike_rooted",
\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
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
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
809 on_place = function(itemstack, placer, pointed_thing)
\r
810 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
838 after_destruct = function(pos, oldnode)
\r
839 minetest.set_node(pos, {name = "xocean:skeleton_horn"})
\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
849 minetest.register_node("xocean:fire", {
\r
850 description = "Fire Coral",
\r
851 drawtype = "plantlike_rooted",
\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
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
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
873 on_place = function(itemstack, placer, pointed_thing)
\r
874 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
902 after_destruct = function(pos, oldnode)
\r
903 minetest.set_node(pos, {name = "default:coral_orange"})
\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
912 minetest.register_node("xocean:skeleton_fire", {
\r
913 description = "Fire Coral Skeleton",
\r
914 drawtype = "plantlike_rooted",
\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
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
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
935 on_place = function(itemstack, placer, pointed_thing)
\r
936 if pointed_thing.type ~= "node" or not placer then
\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
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
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
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
964 after_destruct = function(pos, oldnode)
\r
965 minetest.set_node(pos, {name = "xocean:fire_skeleton"})
\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
978 spread = {x = 100000, y = 100000, z = 100000},
\r
985 "snowy_grassland_ocean",
\r
987 "coniferous_forest_ocean",
\r
988 "deciduous_forest_ocean",
\r
989 "sandstone_desert_ocean",
\r
990 "cold_desert_ocean"},
\r
993 flags = "force_placement",
\r
994 schematic = minetest.get_modpath("xocean") .. "/schems/brain.mts",
\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
1007 spread = {x = 100000, y = 100000, z = 100000},
\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
1022 flags = "force_placement",
\r
1023 schematic = minetest.get_modpath("xocean") .. "/schems/horn.mts",
\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
1036 spread = {x = 100000, y = 100000, z = 100000},
\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
1051 flags = "force_placement",
\r
1052 schematic = minetest.get_modpath("xocean") .. "/schems/bubble.mts",
\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
1065 spread = {x = 100000, y = 100000, z = 100000},
\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
1080 flags = "force_placement",
\r
1081 schematic = minetest.get_modpath("xocean") .. "/schems/tube.mts",
\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
1094 spread = {x = 100000, y = 100000, z = 100000},
\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
1109 flags = "force_placement",
\r
1110 schematic = minetest.get_modpath("xocean") .. "/schems/fire.mts",
\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
1123 spread = {x = 100000, y = 100000, z = 100000},
\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
1138 flags = "force_placement",
\r
1139 schematic = minetest.get_modpath("xocean") .. "/schems/brain2.mts",
\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
1152 spread = {x = 100000, y = 100000, z = 100000},
\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
1167 flags = "force_placement",
\r
1168 schematic = minetest.get_modpath("xocean") .. "/schems/horn2.mts",
\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
1181 spread = {x = 100000, y = 100000, z = 100000},
\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
1196 flags = "force_placement",
\r
1197 schematic = minetest.get_modpath("xocean") .. "/schems/bubble2.mts",
\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
1210 spread = {x = 100000, y = 100000, z = 100000},
\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
1225 flags = "force_placement",
\r
1226 schematic = minetest.get_modpath("xocean") .. "/schems/tube2.mts",
\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
1239 spread = {x = 100000, y = 100000, z = 100000},
\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
1254 flags = "force_placement",
\r
1255 schematic = minetest.get_modpath("xocean") .. "/schems/fire2.mts",
\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
1268 spread = {x = 100000, y = 100000, z = 100000},
\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
1283 flags = "force_placement",
\r
1284 schematic = minetest.get_modpath("xocean") .. "/schems/tube3.mts",
\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
1297 spread = {x = 100000, y = 100000, z = 100000},
\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
1312 flags = "force_placement",
\r
1313 schematic = minetest.get_modpath("xocean") .. "/schems/brain3.mts",
\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
1326 spread = {x = 200, y = 200, z = 200},
\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
1341 flags = "force_placement",
\r
1342 decoration = "xocean:seagrass",
\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
1355 spread = {x = 20, y = 20, z = 20},
\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
1370 flags = "force_placement",
\r
1371 decoration = "xocean:skeleton_fire",
\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
1384 spread = {x = 20, y = 20, z = 20},
\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
1399 flags = "force_placement",
\r
1400 decoration = "xocean:skeleton_horn",
\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
1413 spread = {x = 20, y = 20, z = 20},
\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
1428 flags = "force_placement",
\r
1429 decoration = "xocean:skeleton_bubble",
\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
1442 spread = {x = 20, y = 20, z = 20},
\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
1457 flags = "force_placement",
\r
1458 decoration = "xocean:skeleton_brain",
\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
1471 spread = {x = 20, y = 20, z = 20},
\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
1486 flags = "force_placement",
\r
1487 decoration = "xocean:skeleton_tube",
\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
1500 spread = {x = 20, y = 20, z = 20},
\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
1515 flags = "force_placement",
\r
1516 decoration = "xocean:fire",
\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
1529 spread = {x = 20, y = 20, z = 20},
\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
1544 flags = "force_placement",
\r
1545 decoration = "xocean:horn",
\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
1558 spread = {x = 20, y = 20, z = 20},
\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
1573 flags = "force_placement",
\r
1574 decoration = "xocean:bubble",
\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
1587 spread = {x = 20, y = 20, z = 20},
\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
1602 flags = "force_placement",
\r
1603 decoration = "default:coral_pink",
\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
1616 spread = {x = 20, y = 20, z = 20},
\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
1631 flags = "force_placement",
\r
1632 decoration = "default:coral_cyan",
\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
1645 spread = {x = 200, y = 200, z = 200},
\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
1660 flags = "force_placement",
\r
1661 decoration = "xocean:pickle",
\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
1670 attack_type = "dogfight",
\r
1672 visual_size = {x = 15, y = 15, z= 15},
\r
1677 collisionbox = {-0.75, -0.5, -0.75, 0.75, 0.5, 0.75},
\r
1679 mesh = "dolphin.b3d",
\r
1681 {"mobs_dolphin.png"}
\r
1684 {name = "mobs:meat_raw", chance = 1, min = 2, max = 4},
\r
1686 makes_footstep_sound = false,
\r
1687 walk_velocity = 4,
\r
1690 fly_in = "default:water_source",
\r
1700 speed_normal = 15,
\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
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
1720 mesh = "fishy.b3d",
\r
1722 {"mobs_fishy.png"},
\r
1723 {"mobs_fishy1.png"},
\r
1724 {"mobs_fishy2.png"},
\r
1725 {"mobs_fishy3.png"}
\r
1728 {name = "xocean:fish_edible", chance = 1, min = 1, max = 1},
\r
1730 makes_footstep_sound = false,
\r
1731 walk_velocity = 2,
\r
1734 fly_in = "default:water_source",
\r
1742 speed_normal = 15,
\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
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
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
1768 mesh = "fishy.b3d",
\r
1770 {"mobs_fishy4.png"},
\r
1771 {"mobs_fishy5.png"},
\r
1772 {"mobs_fishy6.png"}
\r
1775 {name = "xocean:fish_edible", chance = 2, min = 1, max = 2},
\r
1777 makes_footstep_sound = false,
\r
1778 walk_velocity = 2,
\r
1781 fly_in = "default:water_source",
\r
1788 speed_normal = 15,
\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
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
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
1814 mesh = "fishy.b3d",
\r
1816 {"mobs_fishy7.png"},
\r
1817 {"mobs_fishy8.png"},
\r
1818 {"mobs_fishy9.png"}
\r
1821 {name = "xocean:fish_edible", chance = 2, min = 1, max = 2},
\r
1823 makes_footstep_sound = false,
\r
1824 walk_velocity = 2,
\r
1827 fly_in = "default:water_source",
\r
1834 speed_normal = 15,
\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
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
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
1860 mesh = "fishy.b3d",
\r
1862 {"mobs_fishy10.png"},
\r
1863 {"mobs_fishy11.png"},
\r
1864 {"mobs_fishy12.png"}
\r
1867 {name = "xocean:fish_edible", chance = 2, min = 1, max = 2},
\r
1869 makes_footstep_sound = false,
\r
1870 walk_velocity = 2,
\r
1873 fly_in = "default:water_source",
\r
1880 speed_normal = 15,
\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
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