1 -- mods/default/nodes.lua
4 --[[ Node name convention:
6 Although many node names are in combined-word form, the required form for new
7 node names is words separated by underscores. If both forms are used in written
8 language (for example pinewood and pine wood) the underscore form should be used.
17 (1. Material 2. Cobble variant 3. Brick variant [4. Modified forms])
26 default:desert_stonebrick
29 default:sandstonebrick
36 (1. Material [2. Modified forms])
39 default:dirt_with_grass
40 default:dirt_with_grass_footsteps
41 default:dirt_with_dry_grass
42 default:dirt_with_snow
58 (1. Trunk 2. Fabricated trunk 3. Leaves 4. Sapling [5. Fruits])
79 default:acacia_sapling
87 (1. In stone 2. Block)
89 default:stone_with_coal
92 default:stone_with_iron
95 default:stone_with_copper
99 default:stone_with_gold
102 default:stone_with_mese
105 default:stone_with_diamond
108 Plantlife (non-cubic)
109 ---------------------
129 (1. Source 2. Flowing)
132 default:water_flowing
134 default:river_water_source
135 default:river_water_flowing
140 Tools / "Advanced" crafting / Non-"natural"
141 -------------------------------------------
154 default:fence_acacia_wood
155 default:fence_junglewood
156 default:fence_pine_wood
157 default:fence_aspen_wood
160 default:obsidian_glass
172 default:nyancat_rainbow
180 minetest.register_node("default:stone", {
181 description = "Stone",
182 tiles = {"default_stone.png"},
183 groups = {cracky = 3, stone = 1},
184 drop = 'default:cobble',
185 legacy_mineral = true,
186 sounds = default.node_sound_stone_defaults(),
189 minetest.register_node("default:cobble", {
190 description = "Cobblestone",
191 tiles = {"default_cobble.png"},
192 is_ground_content = false,
193 groups = {cracky = 3, stone = 2},
194 sounds = default.node_sound_stone_defaults(),
197 minetest.register_node("default:stonebrick", {
198 description = "Stone Brick",
199 tiles = {"default_stone_brick.png"},
200 is_ground_content = false,
201 groups = {cracky = 2, stone = 1},
202 sounds = default.node_sound_stone_defaults(),
205 minetest.register_node("default:mossycobble", {
206 description = "Mossy Cobblestone",
207 tiles = {"default_mossycobble.png"},
208 is_ground_content = false,
209 groups = {cracky = 3, stone = 1},
210 sounds = default.node_sound_stone_defaults(),
214 minetest.register_node("default:desert_stone", {
215 description = "Desert Stone",
216 tiles = {"default_desert_stone.png"},
217 groups = {cracky = 3, stone = 1},
218 drop = 'default:desert_cobble',
219 legacy_mineral = true,
220 sounds = default.node_sound_stone_defaults(),
223 minetest.register_node("default:desert_cobble", {
224 description = "Desert Cobblestone",
225 tiles = {"default_desert_cobble.png"},
226 is_ground_content = false,
227 groups = {cracky = 3, stone = 2},
228 sounds = default.node_sound_stone_defaults(),
231 minetest.register_node("default:desert_stonebrick", {
232 description = "Desert Stone Brick",
233 tiles = {"default_desert_stone_brick.png"},
234 is_ground_content = false,
235 groups = {cracky = 2, stone = 1},
236 sounds = default.node_sound_stone_defaults(),
240 minetest.register_node("default:sandstone", {
241 description = "Sandstone",
242 tiles = {"default_sandstone.png"},
243 groups = {crumbly = 2, cracky = 3},
244 sounds = default.node_sound_stone_defaults(),
247 minetest.register_node("default:sandstonebrick", {
248 description = "Sandstone Brick",
249 tiles = {"default_sandstone_brick.png"},
250 is_ground_content = false,
251 groups = {cracky = 2},
252 sounds = default.node_sound_stone_defaults(),
256 minetest.register_node("default:obsidian", {
257 description = "Obsidian",
258 tiles = {"default_obsidian.png"},
259 sounds = default.node_sound_stone_defaults(),
260 groups = {cracky = 1, level = 2},
263 minetest.register_node("default:obsidianbrick", {
264 description = "Obsidian Brick",
265 tiles = {"default_obsidian_brick.png"},
266 is_ground_content = false,
267 sounds = default.node_sound_stone_defaults(),
268 groups = {cracky = 1, level = 2},
275 minetest.register_node("default:dirt", {
276 description = "Dirt",
277 tiles = {"default_dirt.png"},
278 groups = {crumbly = 3, soil = 1},
279 sounds = default.node_sound_dirt_defaults(),
282 minetest.register_node("default:dirt_with_grass", {
283 description = "Dirt with Grass",
284 tiles = {"default_grass.png", "default_dirt.png",
285 {name = "default_dirt.png^default_grass_side.png",
286 tileable_vertical = false}},
287 groups = {crumbly = 3, soil = 1},
288 drop = 'default:dirt',
289 sounds = default.node_sound_dirt_defaults({
290 footstep = {name = "default_grass_footstep", gain = 0.25},
294 minetest.register_node("default:dirt_with_grass_footsteps", {
295 description = "Dirt with Grass and Footsteps",
296 tiles = {"default_grass.png^default_footprint.png", "default_dirt.png",
297 {name = "default_dirt.png^default_grass_side.png",
298 tileable_vertical = false}},
299 groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1},
300 drop = 'default:dirt',
301 sounds = default.node_sound_dirt_defaults({
302 footstep = {name = "default_grass_footstep", gain = 0.25},
306 minetest.register_node("default:dirt_with_dry_grass", {
307 description = "Dirt with Dry Grass",
308 tiles = {"default_dry_grass.png",
310 {name = "default_dirt.png^default_dry_grass_side.png",
311 tileable_vertical = false}},
312 groups = {crumbly = 3, soil = 1},
313 drop = 'default:dirt',
314 sounds = default.node_sound_dirt_defaults({
315 footstep = {name = "default_grass_footstep", gain = 0.4},
319 minetest.register_node("default:dirt_with_snow", {
320 description = "Dirt with Snow",
321 tiles = {"default_snow.png", "default_dirt.png",
322 {name = "default_dirt.png^default_snow_side.png",
323 tileable_vertical = false}},
324 groups = {crumbly = 3, soil = 1},
325 drop = 'default:dirt',
326 sounds = default.node_sound_dirt_defaults({
327 footstep = {name = "default_snow_footstep", gain = 0.15},
331 minetest.register_node("default:sand", {
332 description = "Sand",
333 tiles = {"default_sand.png"},
334 groups = {crumbly = 3, falling_node = 1, sand = 1},
335 sounds = default.node_sound_sand_defaults(),
338 minetest.register_node("default:desert_sand", {
339 description = "Desert Sand",
340 tiles = {"default_desert_sand.png"},
341 groups = {crumbly = 3, falling_node = 1, sand = 1},
342 sounds = default.node_sound_sand_defaults(),
346 minetest.register_node("default:gravel", {
347 description = "Gravel",
348 tiles = {"default_gravel.png"},
349 groups = {crumbly = 2, falling_node = 1},
350 sounds = default.node_sound_dirt_defaults({
351 footstep = {name = "default_gravel_footstep", gain = 0.5},
352 dug = {name = "default_gravel_footstep", gain = 1.0},
357 minetest.register_node("default:clay", {
358 description = "Clay",
359 tiles = {"default_clay.png"},
360 groups = {crumbly = 3},
361 drop = 'default:clay_lump 4',
362 sounds = default.node_sound_dirt_defaults(),
366 minetest.register_node("default:snow", {
367 description = "Snow",
368 tiles = {"default_snow.png"},
369 inventory_image = "default_snowball.png",
370 wield_image = "default_snowball.png",
373 drawtype = "nodebox",
377 {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5},
380 groups = {crumbly = 3, falling_node = 1, puts_out_fire = 1},
381 sounds = default.node_sound_dirt_defaults({
382 footstep = {name = "default_snow_footstep", gain = 0.15},
383 dug = {name = "default_snow_footstep", gain = 0.2},
384 dig = {name = "default_snow_footstep", gain = 0.2}
387 on_construct = function(pos)
389 if minetest.get_node(pos).name == "default:dirt_with_grass" then
390 minetest.set_node(pos, {name = "default:dirt_with_snow"})
395 minetest.register_node("default:snowblock", {
396 description = "Snow Block",
397 tiles = {"default_snow.png"},
398 groups = {crumbly = 3, puts_out_fire = 1},
399 sounds = default.node_sound_dirt_defaults({
400 footstep = {name = "default_snow_footstep", gain = 0.15},
401 dug = {name = "default_snow_footstep", gain = 0.2},
402 dig = {name = "default_snow_footstep", gain = 0.2}
406 minetest.register_node("default:ice", {
408 tiles = {"default_ice.png"},
409 is_ground_content = false,
411 groups = {cracky = 3, puts_out_fire = 1},
412 sounds = default.node_sound_glass_defaults(),
419 minetest.register_node("default:tree", {
420 description = "Tree",
421 tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
422 paramtype2 = "facedir",
423 is_ground_content = false,
424 groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
425 sounds = default.node_sound_wood_defaults(),
427 on_place = minetest.rotate_node
430 minetest.register_node("default:wood", {
431 description = "Wooden Planks",
432 tiles = {"default_wood.png"},
433 is_ground_content = false,
434 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
435 sounds = default.node_sound_wood_defaults(),
438 minetest.register_node("default:sapling", {
439 description = "Sapling",
440 drawtype = "plantlike",
442 tiles = {"default_sapling.png"},
443 inventory_image = "default_sapling.png",
444 wield_image = "default_sapling.png",
446 sunlight_propagates = true,
450 fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
452 groups = {snappy = 2, dig_immediate = 3, flammable = 2,
453 attached_node = 1, sapling = 1},
454 sounds = default.node_sound_leaves_defaults(),
457 minetest.register_node("default:leaves", {
458 description = "Leaves",
459 drawtype = "allfaces_optional",
462 tiles = {"default_leaves.png"},
463 special_tiles = {"default_leaves_simple.png"},
465 is_ground_content = false,
466 groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
471 -- player will get sapling with 1/20 chance
472 items = {'default:sapling'},
476 -- player will get leaves only if he get no saplings,
477 -- this is because max_items is 1
478 items = {'default:leaves'},
482 sounds = default.node_sound_leaves_defaults(),
484 after_place_node = default.after_place_leaves,
487 minetest.register_node("default:apple", {
488 description = "Apple",
489 drawtype = "plantlike",
491 tiles = {"default_apple.png"},
492 inventory_image = "default_apple.png",
494 sunlight_propagates = true,
496 is_ground_content = false,
499 fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
501 groups = {fleshy = 3, dig_immediate = 3, flammable = 2,
502 leafdecay = 3, leafdecay_drop = 1},
503 on_use = minetest.item_eat(2),
504 sounds = default.node_sound_leaves_defaults(),
506 after_place_node = function(pos, placer, itemstack)
507 if placer:is_player() then
508 minetest.set_node(pos, {name = "default:apple", param2 = 1})
514 minetest.register_node("default:jungletree", {
515 description = "Jungle Tree",
516 tiles = {"default_jungletree_top.png", "default_jungletree_top.png",
517 "default_jungletree.png"},
518 paramtype2 = "facedir",
519 is_ground_content = false,
520 groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
521 sounds = default.node_sound_wood_defaults(),
523 on_place = minetest.rotate_node
526 minetest.register_node("default:junglewood", {
527 description = "Junglewood Planks",
528 tiles = {"default_junglewood.png"},
529 is_ground_content = false,
530 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
531 sounds = default.node_sound_wood_defaults(),
534 minetest.register_node("default:jungleleaves", {
535 description = "Jungle Leaves",
536 drawtype = "allfaces_optional",
539 tiles = {"default_jungleleaves.png"},
540 special_tiles = {"default_jungleleaves_simple.png"},
542 is_ground_content = false,
543 groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
547 {items = {'default:junglesapling'}, rarity = 20},
548 {items = {'default:jungleleaves'}}
551 sounds = default.node_sound_leaves_defaults(),
553 after_place_node = default.after_place_leaves,
556 minetest.register_node("default:junglesapling", {
557 description = "Jungle Sapling",
558 drawtype = "plantlike",
560 tiles = {"default_junglesapling.png"},
561 inventory_image = "default_junglesapling.png",
562 wield_image = "default_junglesapling.png",
564 sunlight_propagates = true,
568 fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
570 groups = {snappy = 2, dig_immediate = 3, flammable = 2,
571 attached_node = 1, sapling = 1},
572 sounds = default.node_sound_leaves_defaults(),
576 minetest.register_node("default:pine_tree", {
577 description = "Pine Tree",
578 tiles = {"default_pine_tree_top.png", "default_pine_tree_top.png",
579 "default_pine_tree.png"},
580 paramtype2 = "facedir",
581 is_ground_content = false,
582 groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
583 sounds = default.node_sound_wood_defaults(),
585 on_place = minetest.rotate_node
588 minetest.register_node("default:pine_wood", {
589 description = "Pine Wood Planks",
590 tiles = {"default_pine_wood.png"},
591 is_ground_content = false,
592 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
593 sounds = default.node_sound_wood_defaults(),
596 minetest.register_node("default:pine_needles",{
597 description = "Pine Needles",
598 drawtype = "allfaces_optional",
600 tiles = {"default_pine_needles.png"},
603 is_ground_content = false,
604 groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
608 {items = {"default:pine_sapling"}, rarity = 20},
609 {items = {"default:pine_needles"}}
612 sounds = default.node_sound_leaves_defaults(),
614 after_place_node = default.after_place_leaves,
617 minetest.register_node("default:pine_sapling", {
618 description = "Pine Sapling",
619 drawtype = "plantlike",
621 tiles = {"default_pine_sapling.png"},
622 inventory_image = "default_pine_sapling.png",
623 wield_image = "default_pine_sapling.png",
625 sunlight_propagates = true,
629 fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
631 groups = {snappy = 2, dig_immediate = 3, flammable = 2,
632 attached_node = 1, sapling = 1},
633 sounds = default.node_sound_leaves_defaults(),
637 minetest.register_node("default:acacia_tree", {
638 description = "Acacia Tree",
639 tiles = {"default_acacia_tree_top.png", "default_acacia_tree_top.png",
640 "default_acacia_tree.png"},
641 paramtype2 = "facedir",
642 is_ground_content = false,
643 groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
644 sounds = default.node_sound_wood_defaults(),
646 on_place = minetest.rotate_node
649 minetest.register_node("default:acacia_wood", {
650 description = "Acacia Wood Planks",
651 tiles = {"default_acacia_wood.png"},
652 is_ground_content = false,
653 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
654 sounds = default.node_sound_wood_defaults(),
657 minetest.register_node("default:acacia_leaves", {
658 description = "Acacia Leaves",
659 drawtype = "allfaces_optional",
661 tiles = {"default_acacia_leaves.png"},
664 is_ground_content = false,
665 groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
669 {items = {"default:acacia_sapling"}, rarity = 20},
670 {items = {"default:acacia_leaves"}}
673 sounds = default.node_sound_leaves_defaults(),
675 after_place_node = default.after_place_leaves,
678 minetest.register_node("default:acacia_sapling", {
679 description = "Acacia Tree Sapling",
680 drawtype = "plantlike",
682 tiles = {"default_acacia_sapling.png"},
683 inventory_image = "default_acacia_sapling.png",
684 wield_image = "default_acacia_sapling.png",
686 sunlight_propagates = true,
690 fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
692 groups = {snappy = 2, dig_immediate = 3, flammable = 2,
693 attached_node = 1, sapling = 1},
694 sounds = default.node_sound_leaves_defaults(),
697 minetest.register_node("default:aspen_tree", {
698 description = "Aspen Tree",
699 tiles = {"default_aspen_tree_top.png", "default_aspen_tree_top.png",
700 "default_aspen_tree.png"},
701 paramtype2 = "facedir",
702 is_ground_content = false,
703 groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
704 sounds = default.node_sound_wood_defaults(),
706 on_place = minetest.rotate_node
709 minetest.register_node("default:aspen_wood", {
710 description = "Aspen Wood Planks",
711 tiles = {"default_aspen_wood.png"},
712 is_ground_content = false,
713 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 3, wood = 1},
714 sounds = default.node_sound_wood_defaults(),
717 minetest.register_node("default:aspen_leaves", {
718 description = "Aspen Leaves",
719 drawtype = "allfaces_optional",
721 tiles = {"default_aspen_leaves.png"},
724 is_ground_content = false,
725 groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
729 {items = {"default:aspen_sapling"}, rarity = 20},
730 {items = {"default:aspen_leaves"}}
733 sounds = default.node_sound_leaves_defaults(),
735 after_place_node = default.after_place_leaves,
738 minetest.register_node("default:aspen_sapling", {
739 description = "Aspen Tree Sapling",
740 drawtype = "plantlike",
742 tiles = {"default_aspen_sapling.png"},
743 inventory_image = "default_aspen_sapling.png",
744 wield_image = "default_aspen_sapling.png",
746 sunlight_propagates = true,
750 fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
752 groups = {snappy = 2, dig_immediate = 3, flammable = 2,
753 attached_node = 1, sapling = 1},
754 sounds = default.node_sound_leaves_defaults(),
760 minetest.register_node("default:stone_with_coal", {
761 description = "Coal Ore",
762 tiles = {"default_stone.png^default_mineral_coal.png"},
763 groups = {cracky = 3},
764 drop = 'default:coal_lump',
765 sounds = default.node_sound_stone_defaults(),
768 minetest.register_node("default:coalblock", {
769 description = "Coal Block",
770 tiles = {"default_coal_block.png"},
771 is_ground_content = false,
772 groups = {cracky = 3},
773 sounds = default.node_sound_stone_defaults(),
777 minetest.register_node("default:stone_with_iron", {
778 description = "Iron Ore",
779 tiles = {"default_stone.png^default_mineral_iron.png"},
780 groups = {cracky = 2},
781 drop = 'default:iron_lump',
782 sounds = default.node_sound_stone_defaults(),
785 minetest.register_node("default:steelblock", {
786 description = "Steel Block",
787 tiles = {"default_steel_block.png"},
788 is_ground_content = false,
789 groups = {cracky = 1, level = 2},
790 sounds = default.node_sound_stone_defaults(),
794 minetest.register_node("default:stone_with_copper", {
795 description = "Copper Ore",
796 tiles = {"default_stone.png^default_mineral_copper.png"},
797 groups = {cracky = 2},
798 drop = 'default:copper_lump',
799 sounds = default.node_sound_stone_defaults(),
802 minetest.register_node("default:copperblock", {
803 description = "Copper Block",
804 tiles = {"default_copper_block.png"},
805 is_ground_content = false,
806 groups = {cracky = 1, level = 2},
807 sounds = default.node_sound_stone_defaults(),
810 minetest.register_node("default:bronzeblock", {
811 description = "Bronze Block",
812 tiles = {"default_bronze_block.png"},
813 is_ground_content = false,
814 groups = {cracky = 1, level = 2},
815 sounds = default.node_sound_stone_defaults(),
819 minetest.register_node("default:stone_with_mese", {
820 description = "Mese Ore",
821 tiles = {"default_stone.png^default_mineral_mese.png"},
822 groups = {cracky = 1},
823 drop = "default:mese_crystal",
824 sounds = default.node_sound_stone_defaults(),
827 minetest.register_node("default:mese", {
828 description = "Mese Block",
829 tiles = {"default_mese_block.png"},
831 groups = {cracky = 1, level = 2},
832 sounds = default.node_sound_stone_defaults(),
837 minetest.register_node("default:stone_with_gold", {
838 description = "Gold Ore",
839 tiles = {"default_stone.png^default_mineral_gold.png"},
840 groups = {cracky = 2},
841 drop = "default:gold_lump",
842 sounds = default.node_sound_stone_defaults(),
845 minetest.register_node("default:goldblock", {
846 description = "Gold Block",
847 tiles = {"default_gold_block.png"},
848 is_ground_content = false,
849 groups = {cracky = 1},
850 sounds = default.node_sound_stone_defaults(),
854 minetest.register_node("default:stone_with_diamond", {
855 description = "Diamond Ore",
856 tiles = {"default_stone.png^default_mineral_diamond.png"},
857 groups = {cracky = 1},
858 drop = "default:diamond",
859 sounds = default.node_sound_stone_defaults(),
862 minetest.register_node("default:diamondblock", {
863 description = "Diamond Block",
864 tiles = {"default_diamond_block.png"},
865 is_ground_content = false,
866 groups = {cracky = 1, level = 3},
867 sounds = default.node_sound_stone_defaults(),
871 -- Plantlife (non-cubic)
874 minetest.register_node("default:cactus", {
875 description = "Cactus",
876 tiles = {"default_cactus_top.png", "default_cactus_top.png",
877 "default_cactus_side.png"},
878 paramtype2 = "facedir",
879 groups = {snappy = 1, choppy = 3, flammable = 2},
880 sounds = default.node_sound_wood_defaults(),
881 on_place = minetest.rotate_node,
883 after_dig_node = function(pos, node, metadata, digger)
884 default.dig_up(pos, node, digger)
888 minetest.register_node("default:papyrus", {
889 description = "Papyrus",
890 drawtype = "plantlike",
891 tiles = {"default_papyrus.png"},
892 inventory_image = "default_papyrus.png",
893 wield_image = "default_papyrus.png",
895 sunlight_propagates = true,
899 fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
901 groups = {snappy = 3, flammable = 2},
902 sounds = default.node_sound_leaves_defaults(),
904 after_dig_node = function(pos, node, metadata, digger)
905 default.dig_up(pos, node, digger)
909 minetest.register_node("default:dry_shrub", {
910 description = "Dry Shrub",
911 drawtype = "plantlike",
914 tiles = {"default_dry_shrub.png"},
915 inventory_image = "default_dry_shrub.png",
916 wield_image = "default_dry_shrub.png",
918 sunlight_propagates = true,
921 groups = {snappy = 3, flammable = 3, attached_node = 1},
922 sounds = default.node_sound_leaves_defaults(),
925 fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
929 minetest.register_node("default:junglegrass", {
930 description = "Jungle Grass",
931 drawtype = "plantlike",
934 tiles = {"default_junglegrass.png"},
935 inventory_image = "default_junglegrass.png",
936 wield_image = "default_junglegrass.png",
938 sunlight_propagates = true,
941 groups = {snappy = 3, flammable = 2, flora = 1, attached_node = 1},
942 sounds = default.node_sound_leaves_defaults(),
945 fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
950 minetest.register_node("default:grass_1", {
951 description = "Grass",
952 drawtype = "plantlike",
954 tiles = {"default_grass_1.png"},
955 -- Use texture of a taller grass stage in inventory
956 inventory_image = "default_grass_3.png",
957 wield_image = "default_grass_3.png",
959 sunlight_propagates = true,
962 groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1},
963 sounds = default.node_sound_leaves_defaults(),
966 fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
969 on_place = function(itemstack, placer, pointed_thing)
970 -- place a random grass node
971 local stack = ItemStack("default:grass_" .. math.random(1,5))
972 local ret = minetest.item_place(stack, placer, pointed_thing)
973 return ItemStack("default:grass_1 " ..
974 itemstack:get_count() - (1 - ret:get_count()))
979 minetest.register_node("default:grass_" .. i, {
980 description = "Grass",
981 drawtype = "plantlike",
983 tiles = {"default_grass_" .. i .. ".png"},
984 inventory_image = "default_grass_" .. i .. ".png",
985 wield_image = "default_grass_" .. i .. ".png",
987 sunlight_propagates = true,
990 drop = "default:grass_1",
991 groups = {snappy = 3, flammable = 3, flora = 1,
992 attached_node = 1, not_in_creative_inventory = 1},
993 sounds = default.node_sound_leaves_defaults(),
996 fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
1002 minetest.register_node("default:dry_grass_1", {
1003 description = "Dry Grass",
1004 drawtype = "plantlike",
1006 tiles = {"default_dry_grass_1.png"},
1007 inventory_image = "default_dry_grass_3.png",
1008 wield_image = "default_dry_grass_3.png",
1009 paramtype = "light",
1010 sunlight_propagates = true,
1012 buildable_to = true,
1013 groups = {snappy = 3, flammable = 3, flora = 1, attached_node = 1},
1014 sounds = default.node_sound_leaves_defaults(),
1017 fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
1020 on_place = function(itemstack, placer, pointed_thing)
1021 -- place a random dry grass node
1022 local stack = ItemStack("default:dry_grass_" .. math.random(1, 5))
1023 local ret = minetest.item_place(stack, placer, pointed_thing)
1024 return ItemStack("default:dry_grass_1 " ..
1025 itemstack:get_count() - (1 - ret:get_count()))
1030 minetest.register_node("default:dry_grass_" .. i, {
1031 description = "Dry Grass",
1032 drawtype = "plantlike",
1034 tiles = {"default_dry_grass_" .. i .. ".png"},
1035 inventory_image = "default_dry_grass_" .. i .. ".png",
1036 wield_image = "default_dry_grass_" .. i .. ".png",
1037 paramtype = "light",
1038 sunlight_propagates = true,
1040 buildable_to = true,
1041 groups = {snappy = 3, flammable = 3, flora = 1,
1042 attached_node = 1, not_in_creative_inventory=1},
1043 drop = "default:dry_grass_1",
1044 sounds = default.node_sound_leaves_defaults(),
1047 fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
1056 minetest.register_node("default:water_source", {
1057 description = "Water Source",
1058 drawtype = "liquid",
1061 name = "default_water_source_animated.png",
1063 type = "vertical_frames",
1071 -- New-style water source material (mostly unused)
1073 name = "default_water_source_animated.png",
1075 type = "vertical_frames",
1080 backface_culling = false,
1084 paramtype = "light",
1088 buildable_to = true,
1089 is_ground_content = false,
1092 liquidtype = "source",
1093 liquid_alternative_flowing = "default:water_flowing",
1094 liquid_alternative_source = "default:water_source",
1095 liquid_viscosity = 1,
1096 post_effect_color = {a = 103, r = 30, g = 60, b = 90},
1097 groups = {water = 3, liquid = 3, puts_out_fire = 1},
1100 minetest.register_node("default:water_flowing", {
1101 description = "Flowing Water",
1102 drawtype = "flowingliquid",
1103 tiles = {"default_water.png"},
1106 name = "default_water_flowing_animated.png",
1107 backface_culling = false,
1109 type = "vertical_frames",
1116 name = "default_water_flowing_animated.png",
1117 backface_culling = true,
1119 type = "vertical_frames",
1127 paramtype = "light",
1128 paramtype2 = "flowingliquid",
1132 buildable_to = true,
1133 is_ground_content = false,
1136 liquidtype = "flowing",
1137 liquid_alternative_flowing = "default:water_flowing",
1138 liquid_alternative_source = "default:water_source",
1139 liquid_viscosity = 1,
1140 post_effect_color = {a = 103, r = 30, g = 60, b = 90},
1141 groups = {water = 3, liquid = 3, puts_out_fire = 1,
1142 not_in_creative_inventory = 1},
1146 minetest.register_node("default:river_water_source", {
1147 description = "River Water Source",
1148 drawtype = "liquid",
1151 name = "default_river_water_source_animated.png",
1153 type = "vertical_frames",
1162 name = "default_river_water_source_animated.png",
1164 type = "vertical_frames",
1169 backface_culling = false,
1173 paramtype = "light",
1177 buildable_to = true,
1178 is_ground_content = false,
1181 liquidtype = "source",
1182 liquid_alternative_flowing = "default:river_water_flowing",
1183 liquid_alternative_source = "default:river_water_source",
1184 liquid_viscosity = 1,
1185 liquid_renewable = false,
1187 post_effect_color = {a = 103, r = 30, g = 76, b = 90},
1188 groups = {water = 3, liquid = 3, puts_out_fire = 1},
1191 minetest.register_node("default:river_water_flowing", {
1192 description = "Flowing River Water",
1193 drawtype = "flowingliquid",
1194 tiles = {"default_river_water.png"},
1197 name = "default_river_water_flowing_animated.png",
1198 backface_culling = false,
1200 type = "vertical_frames",
1207 name = "default_river_water_flowing_animated.png",
1208 backface_culling = true,
1210 type = "vertical_frames",
1218 paramtype = "light",
1219 paramtype2 = "flowingliquid",
1223 buildable_to = true,
1224 is_ground_content = false,
1227 liquidtype = "flowing",
1228 liquid_alternative_flowing = "default:river_water_flowing",
1229 liquid_alternative_source = "default:river_water_source",
1230 liquid_viscosity = 1,
1231 liquid_renewable = false,
1233 post_effect_color = {a = 103, r = 30, g = 76, b = 90},
1234 groups = {water = 3, liquid = 3, puts_out_fire = 1,
1235 not_in_creative_inventory = 1},
1239 minetest.register_node("default:lava_source", {
1240 description = "Lava Source",
1241 drawtype = "liquid",
1244 name = "default_lava_source_animated.png",
1246 type = "vertical_frames",
1254 -- New-style lava source material (mostly unused)
1256 name = "default_lava_source_animated.png",
1258 type = "vertical_frames",
1263 backface_culling = false,
1266 paramtype = "light",
1267 light_source = default.LIGHT_MAX - 1,
1271 buildable_to = true,
1272 is_ground_content = false,
1275 liquidtype = "source",
1276 liquid_alternative_flowing = "default:lava_flowing",
1277 liquid_alternative_source = "default:lava_source",
1278 liquid_viscosity = 7,
1279 liquid_renewable = false,
1280 damage_per_second = 4 * 2,
1281 post_effect_color = {a = 191, r = 255, g = 64, b = 0},
1282 groups = {lava = 3, liquid = 2, hot = 3, igniter = 1},
1285 minetest.register_node("default:lava_flowing", {
1286 description = "Flowing Lava",
1287 drawtype = "flowingliquid",
1288 tiles = {"default_lava.png"},
1291 name = "default_lava_flowing_animated.png",
1292 backface_culling = false,
1294 type = "vertical_frames",
1301 name = "default_lava_flowing_animated.png",
1302 backface_culling = true,
1304 type = "vertical_frames",
1311 paramtype = "light",
1312 paramtype2 = "flowingliquid",
1313 light_source = default.LIGHT_MAX - 1,
1317 buildable_to = true,
1318 is_ground_content = false,
1321 liquidtype = "flowing",
1322 liquid_alternative_flowing = "default:lava_flowing",
1323 liquid_alternative_source = "default:lava_source",
1324 liquid_viscosity = 7,
1325 liquid_renewable = false,
1326 damage_per_second = 4 * 2,
1327 post_effect_color = {a = 191, r = 255, g = 64, b = 0},
1328 groups = {lava = 3, liquid = 2, hot = 3, igniter = 1,
1329 not_in_creative_inventory = 1},
1333 -- Tools / "Advanced" crafting / Non-"natural"
1336 minetest.register_node("default:torch", {
1337 description = "Torch",
1338 drawtype = "torchlike",
1341 name = "default_torch_on_floor_animated.png",
1343 type = "vertical_frames",
1350 name="default_torch_on_ceiling_animated.png",
1352 type = "vertical_frames",
1359 name="default_torch_animated.png",
1361 type = "vertical_frames",
1368 inventory_image = "default_torch_on_floor.png",
1369 wield_image = "default_torch_on_floor.png",
1370 paramtype = "light",
1371 paramtype2 = "wallmounted",
1372 sunlight_propagates = true,
1373 is_ground_content = false,
1375 light_source = default.LIGHT_MAX - 1,
1377 type = "wallmounted",
1378 wall_top = {-0.1, 0.5 - 0.6, -0.1, 0.1, 0.5, 0.1},
1379 wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5 + 0.6, 0.1},
1380 wall_side = {-0.5, -0.3, -0.1, -0.5 + 0.3, 0.3, 0.1},
1382 groups = {choppy = 2, dig_immediate = 3, flammable = 1, attached_node = 1},
1383 legacy_wallmounted = true,
1384 sounds = default.node_sound_defaults(),
1388 local chest_formspec =
1391 default.gui_bg_img ..
1392 default.gui_slots ..
1393 "list[current_name;main;0,0.3;8,4;]" ..
1394 "list[current_player;main;0,4.85;8,1;]" ..
1395 "list[current_player;main;0,6.08;8,3;8]" ..
1396 "listring[current_name;main]" ..
1397 "listring[current_player;main]" ..
1398 default.get_hotbar_bg(0,4.85)
1400 local function get_locked_chest_formspec(pos)
1401 local spos = pos.x .. "," .. pos.y .. "," .. pos.z
1405 default.gui_bg_img ..
1406 default.gui_slots ..
1407 "list[nodemeta:" .. spos .. ";main;0,0.3;8,4;]" ..
1408 "list[current_player;main;0,4.85;8,1;]" ..
1409 "list[current_player;main;0,6.08;8,3;8]" ..
1410 "listring[nodemeta:" .. spos .. ";main]" ..
1411 "listring[current_player;main]" ..
1412 default.get_hotbar_bg(0,4.85)
1416 local function has_locked_chest_privilege(meta, player)
1417 if player:get_player_name() ~= meta:get_string("owner") then
1423 minetest.register_node("default:chest", {
1424 description = "Chest",
1425 tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
1426 "default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
1427 paramtype2 = "facedir",
1428 groups = {choppy = 2, oddly_breakable_by_hand = 2},
1429 legacy_facedir_simple = true,
1430 is_ground_content = false,
1431 sounds = default.node_sound_wood_defaults(),
1433 on_construct = function(pos)
1434 local meta = minetest.get_meta(pos)
1435 meta:set_string("formspec", chest_formspec)
1436 meta:set_string("infotext", "Chest")
1437 local inv = meta:get_inventory()
1438 inv:set_size("main", 8*4)
1440 can_dig = function(pos,player)
1441 local meta = minetest.get_meta(pos);
1442 local inv = meta:get_inventory()
1443 return inv:is_empty("main")
1445 on_metadata_inventory_move = function(pos, from_list, from_index,
1446 to_list, to_index, count, player)
1447 minetest.log("action", player:get_player_name() ..
1448 " moves stuff in chest at " .. minetest.pos_to_string(pos))
1450 on_metadata_inventory_put = function(pos, listname, index, stack, player)
1451 minetest.log("action", player:get_player_name() ..
1452 " moves stuff to chest at " .. minetest.pos_to_string(pos))
1454 on_metadata_inventory_take = function(pos, listname, index, stack, player)
1455 minetest.log("action", player:get_player_name() ..
1456 " takes stuff from chest at " .. minetest.pos_to_string(pos))
1460 minetest.register_node("default:chest_locked", {
1461 description = "Locked Chest",
1462 tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
1463 "default_chest_side.png", "default_chest_side.png", "default_chest_lock.png"},
1464 paramtype2 = "facedir",
1465 groups = {choppy = 2, oddly_breakable_by_hand = 2},
1466 legacy_facedir_simple = true,
1467 is_ground_content = false,
1468 sounds = default.node_sound_wood_defaults(),
1470 after_place_node = function(pos, placer)
1471 local meta = minetest.get_meta(pos)
1472 meta:set_string("owner", placer:get_player_name() or "")
1473 meta:set_string("infotext", "Locked Chest (owned by " ..
1474 meta:get_string("owner") .. ")")
1476 on_construct = function(pos)
1477 local meta = minetest.get_meta(pos)
1478 meta:set_string("infotext", "Locked Chest")
1479 meta:set_string("owner", "")
1480 local inv = meta:get_inventory()
1481 inv:set_size("main", 8 * 4)
1483 can_dig = function(pos,player)
1484 local meta = minetest.get_meta(pos);
1485 local inv = meta:get_inventory()
1486 return inv:is_empty("main") and has_locked_chest_privilege(meta, player)
1488 allow_metadata_inventory_move = function(pos, from_list, from_index,
1489 to_list, to_index, count, player)
1490 local meta = minetest.get_meta(pos)
1491 if not has_locked_chest_privilege(meta, player) then
1496 allow_metadata_inventory_put = function(pos, listname, index, stack, player)
1497 local meta = minetest.get_meta(pos)
1498 if not has_locked_chest_privilege(meta, player) then
1501 return stack:get_count()
1503 allow_metadata_inventory_take = function(pos, listname, index, stack, player)
1504 local meta = minetest.get_meta(pos)
1505 if not has_locked_chest_privilege(meta, player) then
1508 return stack:get_count()
1510 on_metadata_inventory_put = function(pos, listname, index, stack, player)
1511 minetest.log("action", player:get_player_name() ..
1512 " moves stuff to locked chest at " .. minetest.pos_to_string(pos))
1514 on_metadata_inventory_take = function(pos, listname, index, stack, player)
1515 minetest.log("action", player:get_player_name() ..
1516 " takes stuff from locked chest at " .. minetest.pos_to_string(pos))
1518 on_rightclick = function(pos, node, clicker)
1519 local meta = minetest.get_meta(pos)
1520 if has_locked_chest_privilege(meta, clicker) then
1521 minetest.show_formspec(
1522 clicker:get_player_name(),
1523 "default:chest_locked",
1524 get_locked_chest_formspec(pos)
1528 on_blast = function() end,
1532 local bookshelf_formspec =
1535 default.gui_bg_img ..
1536 default.gui_slots ..
1537 "list[context;books;0,0.3;8,2;]" ..
1538 "list[current_player;main;0,2.85;8,1;]" ..
1539 "list[current_player;main;0,4.08;8,3;8]" ..
1540 "listring[context;books]" ..
1541 "listring[current_player;main]" ..
1542 default.get_hotbar_bg(0,2.85)
1544 minetest.register_node("default:bookshelf", {
1545 description = "Bookshelf",
1546 tiles = {"default_wood.png", "default_wood.png", "default_bookshelf.png"},
1547 is_ground_content = false,
1548 groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
1549 sounds = default.node_sound_wood_defaults(),
1551 on_construct = function(pos)
1552 local meta = minetest.get_meta(pos)
1553 meta:set_string("formspec", bookshelf_formspec)
1554 local inv = meta:get_inventory()
1555 inv:set_size("books", 8 * 2)
1557 can_dig = function(pos,player)
1558 local meta = minetest.get_meta(pos);
1559 local inv = meta:get_inventory()
1560 return inv:is_empty("books")
1563 allow_metadata_inventory_put = function(pos, listname, index, stack, player)
1564 local meta = minetest.get_meta(pos)
1565 local inv = meta:get_inventory()
1566 local to_stack = inv:get_stack(listname, index)
1567 if listname == "books" then
1568 if minetest.get_item_group(stack:get_name(), "book") ~= 0
1569 and to_stack:is_empty() then
1577 allow_metadata_inventory_move = function(pos, from_list, from_index,
1578 to_list, to_index, count, player)
1579 local meta = minetest.get_meta(pos)
1580 local inv = meta:get_inventory()
1581 local stack = inv:get_stack(from_list, from_index)
1582 local to_stack = inv:get_stack(to_list, to_index)
1583 if to_list == "books" then
1584 if minetest.get_item_group(stack:get_name(), "book") ~= 0
1585 and to_stack:is_empty() then
1593 on_metadata_inventory_move = function(pos, from_list, from_index,
1594 to_list, to_index, count, player)
1595 minetest.log("action", player:get_player_name() ..
1596 " moves stuff in bookshelf at " .. minetest.pos_to_string(pos))
1598 on_metadata_inventory_put = function(pos, listname, index, stack, player)
1599 minetest.log("action", player:get_player_name() ..
1600 " moves stuff to bookshelf at " .. minetest.pos_to_string(pos))
1602 on_metadata_inventory_take = function(pos, listname, index, stack, player)
1603 minetest.log("action", player:get_player_name() ..
1604 " takes stuff from bookshelf at " .. minetest.pos_to_string(pos))
1609 minetest.register_node("default:sign_wall", {
1610 description = "Sign",
1611 drawtype = "nodebox",
1612 tiles = {"default_sign.png"},
1613 inventory_image = "default_sign_wall.png",
1614 wield_image = "default_sign_wall.png",
1615 paramtype = "light",
1616 paramtype2 = "wallmounted",
1617 sunlight_propagates = true,
1618 is_ground_content = false,
1621 type = "wallmounted",
1622 wall_top = {-0.4375, 0.4375, -0.3125, 0.4375, 0.5, 0.3125},
1623 wall_bottom = {-0.4375, -0.5, -0.3125, 0.4375, -0.4375, 0.3125},
1624 wall_side = {-0.5, -0.3125, -0.4375, -0.4375, 0.3125, 0.4375},
1626 groups = {choppy = 2, dig_immediate = 2, attached_node = 1},
1627 legacy_wallmounted = true,
1628 sounds = default.node_sound_defaults(),
1630 on_construct = function(pos)
1631 --local n = minetest.get_node(pos)
1632 local meta = minetest.get_meta(pos)
1633 meta:set_string("formspec", "field[text;;${text}]")
1634 meta:set_string("infotext", "\"\"")
1636 on_receive_fields = function(pos, formname, fields, sender)
1637 --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields))
1638 if minetest.is_protected(pos, sender:get_player_name()) then
1639 minetest.record_protection_violation(pos, sender:get_player_name())
1642 local meta = minetest.get_meta(pos)
1643 if not fields.text then return end
1644 minetest.log("action", (sender:get_player_name() or "") .. " wrote \"" ..
1645 fields.text .. "\" to sign at " .. minetest.pos_to_string(pos))
1646 meta:set_string("text", fields.text)
1647 meta:set_string("infotext", '"' .. fields.text .. '"')
1652 minetest.register_node("default:ladder", {
1653 description = "Ladder",
1654 drawtype = "signlike",
1655 tiles = {"default_ladder.png"},
1656 inventory_image = "default_ladder.png",
1657 wield_image = "default_ladder.png",
1658 paramtype = "light",
1659 paramtype2 = "wallmounted",
1660 sunlight_propagates = true,
1663 is_ground_content = false,
1665 type = "wallmounted",
1666 --wall_top = = <default>
1667 --wall_bottom = = <default>
1668 --wall_side = = <default>
1670 groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2},
1671 legacy_wallmounted = true,
1672 sounds = default.node_sound_wood_defaults(),
1675 default.register_fence("default:fence_wood", {
1676 description = "Wooden Fence",
1677 texture = "default_wood.png",
1678 material = "default:wood",
1679 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
1680 sounds = default.node_sound_wood_defaults()
1683 default.register_fence("default:fence_acacia_wood", {
1684 description = "Acacia Fence",
1685 texture = "default_acacia_wood.png",
1686 material = "default:acacia_wood",
1687 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
1688 sounds = default.node_sound_wood_defaults()
1691 default.register_fence("default:fence_junglewood", {
1692 description = "Junglewood Fence",
1693 texture = "default_junglewood.png",
1694 material = "default:junglewood",
1695 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
1696 sounds = default.node_sound_wood_defaults()
1699 default.register_fence("default:fence_pine_wood", {
1700 description = "Pine Fence",
1701 texture = "default_pine_wood.png",
1702 material = "default:pine_wood",
1703 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
1704 sounds = default.node_sound_wood_defaults()
1707 default.register_fence("default:fence_aspen_wood", {
1708 description = "Aspen Fence",
1709 texture = "default_aspen_wood.png",
1710 material = "default:aspen_wood",
1711 groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
1712 sounds = default.node_sound_wood_defaults()
1715 minetest.register_node("default:glass", {
1716 description = "Glass",
1717 drawtype = "glasslike_framed_optional",
1718 tiles = {"default_glass.png", "default_glass_detail.png"},
1719 paramtype = "light",
1720 sunlight_propagates = true,
1721 is_ground_content = false,
1722 groups = {cracky = 3, oddly_breakable_by_hand = 3},
1723 sounds = default.node_sound_glass_defaults(),
1726 minetest.register_node("default:obsidian_glass", {
1727 description = "Obsidian Glass",
1728 drawtype = "glasslike_framed_optional",
1729 tiles = {"default_obsidian_glass.png", "default_obsidian_glass_detail.png"},
1730 paramtype = "light",
1731 is_ground_content = false,
1732 sunlight_propagates = true,
1733 sounds = default.node_sound_glass_defaults(),
1734 groups = {cracky = 3, oddly_breakable_by_hand = 3},
1738 minetest.register_node("default:rail", {
1739 description = "Rail",
1740 drawtype = "raillike",
1741 tiles = {"default_rail.png", "default_rail_curved.png",
1742 "default_rail_t_junction.png", "default_rail_crossing.png"},
1743 inventory_image = "default_rail.png",
1744 wield_image = "default_rail.png",
1745 paramtype = "light",
1746 sunlight_propagates = true,
1748 is_ground_content = false,
1751 -- but how to specify the dimensions for curved and sideways rails?
1752 fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
1754 groups = {bendy = 2, dig_immediate = 2, attached_node = 1,
1755 connect_to_raillike = minetest.raillike_group("rail")},
1759 minetest.register_node("default:brick", {
1760 description = "Brick Block",
1761 tiles = {"default_brick.png"},
1762 is_ground_content = false,
1763 groups = {cracky = 3},
1764 sounds = default.node_sound_stone_defaults(),
1768 minetest.register_node("default:meselamp", {
1769 description = "Mese Lamp",
1770 drawtype = "glasslike",
1771 tiles = {"default_meselamp.png"},
1772 paramtype = "light",
1773 sunlight_propagates = true,
1774 is_ground_content = false,
1775 groups = {cracky = 3, oddly_breakable_by_hand = 3},
1776 sounds = default.node_sound_glass_defaults(),
1777 light_source = default.LIGHT_MAX,
1784 minetest.register_node("default:cloud", {
1785 description = "Cloud",
1786 tiles = {"default_cloud.png"},
1787 is_ground_content = false,
1788 sounds = default.node_sound_defaults(),
1789 groups = {not_in_creative_inventory = 1},
1792 minetest.register_node("default:nyancat", {
1793 description = "Nyan Cat",
1794 tiles = {"default_nc_side.png", "default_nc_side.png", "default_nc_side.png",
1795 "default_nc_side.png", "default_nc_back.png", "default_nc_front.png"},
1796 paramtype2 = "facedir",
1797 groups = {cracky = 2},
1798 is_ground_content = false,
1799 legacy_facedir_simple = true,
1800 sounds = default.node_sound_defaults(),
1803 minetest.register_node("default:nyancat_rainbow", {
1804 description = "Nyan Cat Rainbow",
1806 "default_nc_rb.png^[transformR90", "default_nc_rb.png^[transformR90",
1807 "default_nc_rb.png", "default_nc_rb.png"
1809 paramtype2 = "facedir",
1810 groups = {cracky = 2},
1811 is_ground_content = false,
1812 sounds = default.node_sound_defaults(),