Advertisement
mg76

riventest_nodes

Dec 25th, 2017
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.59 KB | None | 0 0
  1. riventest={}
  2.  
  3. local WATER_ALPHA = 160
  4. local WATER_VISC = 1
  5. local LIGHT_MAX = 14
  6.  
  7. local round = function( n )
  8.     if n >= 0 then
  9.         return math.floor( n + 0.5 )
  10.     else
  11.         return math.ceil( n - 0.5 )
  12.     end
  13. end
  14.  
  15. --[[
  16. SOUNDS
  17. ]]
  18. -- default
  19. function riventest.node_sound_defaults(table)
  20.     table = table or {}
  21.     table.footstep = table.footstep or
  22.         {name="", gain=1.0}
  23.     table.dug = table.dug or
  24.         {name="riventest_dug_node", gain=1.0}
  25.     return table
  26. end
  27.  
  28. -- metal
  29. function riventest.node_sound_metal_defaults(table)
  30.     table = table or {}
  31.     table.footstep = table.footstep or
  32.         {name="riventest_metal_footstep", gain=1.0}
  33.     table.dig = table.dig or
  34.         {name="riventest_metal_dig", gain=0.5}
  35.     table.dug = table.dug or
  36.         {name="riventest_metal_dug", gain=0.5}
  37.     return table
  38. end
  39.  
  40. -- stone
  41. function riventest.node_sound_stone_defaults(table)
  42.     table = table or {}
  43.     table.footstep = table.footstep or
  44.         {name="riventest_hard_footstep", gain=1.0}
  45.     table.dug = table.dug or
  46.         {name="riventest_dug_node", gain=1.0}
  47.     riventest.node_sound_defaults(table)
  48.     return table
  49. end
  50.  
  51. -- wood
  52. function riventest.node_sound_wood_defaults(table)
  53.     table = table or {}
  54.     table.footstep = table.footstep or
  55.         {name="riventest_wood_footstep", gain=1.0}
  56.     table.dug = table.dug or
  57.         {name="riventest_dug_node", gain=1.0}
  58.     riventest.node_sound_defaults(table)
  59.     return table
  60. end
  61.  
  62. -- glass
  63. riventest.node_sound_glass_defaults = riventest.node_sound_defaults
  64.  
  65. -- leaves
  66. riventest.node_sound_leaves_defaults = riventest.node_sound_defaults
  67.  GLOWLIKE = function(nodeid,nodename,drawtype)
  68.     if drawtype == nil then
  69.         drawtype = 'glasslike'
  70.         inv_image = minetest.inventorycube("riventest_"..nodeid..".png")
  71.     else
  72.         inv_image = "riventest_"..nodeid..".png"
  73.     end
  74.     minetest.register_node("riventest:"..nodeid, {
  75.         description = nodename,
  76.         drawtype = drawtype,
  77.         tiles = {"riventest_"..nodeid..".png"},
  78.         inventory_image = inv_image,
  79.         light_propagates = true,
  80.         paramtype = "light",
  81.         sunlight_propagates = true,
  82.         light_source = 15   ,
  83.         is_ground_content = true,
  84.         groups = {snappy=2,cracky=3},
  85.         sounds = riventest.node_sound_glass_defaults(),
  86.         node_box = {
  87.             type = "fixed",
  88.             fixed = {-0.125, -0.5, -0.125, 0.125, 0.3, 0.125}
  89.         },
  90.         selection_box = {
  91.             type = "fixed",
  92.             fixed = {-0.14, -0.5, -0.14, 0.14, 0.3, 0.14}
  93.         },
  94.  
  95.     })
  96. end
  97. METALLIKE = function(nodeid, nodename,fence)
  98.     minetest.register_node("riventest:"..nodeid, {
  99.         description = nodename,
  100.         tiles = {"riventest_"..nodeid..".png"},
  101.         is_ground_content = true,
  102.         groups = {bendy=2,cracky=1,melty=2},
  103.         sounds = riventest.node_sound_metal_defaults()
  104.     })
  105.     if fence == true then
  106.         minetest.register_node("riventest:"..nodeid.."_fence", {
  107.             description = nodename.." fence",
  108.             drawtype = "fencelike",
  109.             tiles = {"riventest_"..nodeid..".png"},
  110.             inventory_image = "riventest_"..nodeid.."_fence.png",
  111.             wield_image = "riventest_"..nodeid.."_fence.png",
  112.             paramtype = "light",
  113.             is_ground_content = true,
  114.             selection_box = {
  115.                 type = "fixed",
  116.                 fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
  117.             },
  118.             groups = {bendy=2,cracky=1,melty=2},
  119.             sounds = riventest.node_sound_metal_defaults()
  120.         })
  121.     end
  122. end
  123.  
  124. TREELIKE = function(nodeid, nodename,fence)
  125.     minetest.register_node("riventest:"..nodeid, {
  126.         description = nodename,
  127.         tiles = {"riventest_"..nodeid..".png"},
  128.         is_ground_content = true,
  129.         groups = {snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
  130.         sounds = riventest.node_sound_wood_defaults(),
  131.     })
  132.     if fence == true then
  133.         minetest.register_node("riventest:"..nodeid.."_fence", {
  134.             description = nodename.." fence",
  135.             drawtype = "fencelike",
  136.             tiles = {"riventest_"..nodeid..".png"},
  137.             inventory_image = "riventest_"..nodeid.."_fence.png",
  138.             wield_image = "riventest_"..nodeid.."_fence.png",
  139.             paramtype = "light",
  140.             is_ground_content = true,
  141.             selection_box = {
  142.                 type = "fixed",
  143.                 fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
  144.             },
  145.             groups = {snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2,tree=1},
  146.             sounds = riventest.node_sound_wood_defaults()
  147.         })
  148.     end
  149. end
  150.  
  151. STONELIKE = function(nodeid, nodename)
  152.     minetest.register_node("riventest:"..nodeid, {
  153.         description = nodename,
  154.         tiles = {"riventest_"..nodeid..".png"},
  155.         is_ground_content = true,
  156.         groups = {cracky=3, stone=1},
  157.         sounds = riventest.node_sound_stone_defaults()
  158.     })
  159. end
  160.  
  161. local SOUNDS = {}
  162. SOUNDNODE = function(nodeid, nodename,drawtype)
  163.     SOUNDS[nodeid] = {}
  164.     SOUNDS[nodeid].sounds = {}
  165.     local on_punch = function(pos,node)
  166.         local sound = SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)]
  167.         if sound == nil then
  168.             local wanted_sound = {name=nodeid, gain=1.5}
  169.             SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = { handle = minetest.sound_play(wanted_sound, {pos=pos, loop=true}),   name = wanted_sound.name, }
  170.  
  171.         else
  172.             minetest.sound_stop(sound.handle)
  173.             SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = nil
  174.         end
  175.  
  176.     end
  177.     after_dig_node = function(pos,node)
  178.         local sound = SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)]
  179.         if sound ~= nil then
  180.             minetest.sound_stop(sound.handle)
  181.             SOUNDS[nodeid].sounds[minetest.hash_node_position(pos)] = nil
  182.             nodeupdate(pos)
  183.         end
  184.     end
  185.     if drawtype == 'signlike' then
  186.         minetest.register_node("riventest:"..nodeid, {
  187.             description = nodename,
  188.             drawtype = "signlike",
  189.             tiles = {"riventest_"..nodeid..'.png'},
  190.             inventory_image = "riventest_"..nodeid..'.png',
  191.             wield_image = "riventest_"..nodeid..'.png',
  192.             paramtype = "light",
  193.             paramtype2 = "wallmounted",
  194.             sunlight_propagates = true,
  195.             walkable = false,
  196.             metadata_name = "sign",
  197.             selection_box = {
  198.                 type = "wallmounted",
  199.             },
  200.             groups = {snappy=2,choppy=2,dig_immediate=2,flammable=2},
  201.             legacy_wallmounted = true,
  202.             sounds = riventest.node_sound_defaults(),
  203.             on_punch = on_punch,
  204.             after_dig_node = after_dig_node,       
  205.         })
  206.     else
  207.         minetest.register_node("riventest:"..nodeid, {
  208.             description = nodename,
  209.             drawtype = 'plantlike',
  210.             tiles = {"riventest_"..nodeid..'.png'},
  211.             inventory_image = "riventest_"..nodeid..'.png',
  212.             wield_image = "riventest_"..nodeid..'.png',
  213.             paramtype = "light",
  214.             groups = {cracky=3},
  215.             sounds = riventest.node_sound_stone_defaults(),
  216.             on_punch = on_punch,   
  217.             after_dig_node = after_dig_node,
  218.         })
  219.     end
  220. end
  221. PLANTLIKE = function(nodeid, nodename,type,option)
  222.     if option == nil then option = false end
  223.  
  224.     local params ={ description = nodename, drawtype = "plantlike", tiles = {"riventest_"..nodeid..'.png'},
  225.     inventory_image = "riventest_"..nodeid..'.png', wield_image = "riventest_"..nodeid..'.png', paramtype = "light",
  226.     sunlight_propagates=true,
  227.     }
  228.        
  229.     if type == 'veg' then
  230.         params.groups = {snappy=2,dig_immediate=3,flammable=2}
  231.         params.sounds = riventest.node_sound_leaves_defaults()
  232.         if option == false then params.walkable = false end
  233.     elseif type == 'met' then           -- metallic
  234.         params.groups = {snappy=1,bendy=2,cracky=1,melty=2}
  235.         params.sounds = riventest.node_sound_stone_defaults()
  236.     elseif type == 'cri' then           -- craft items
  237.         params.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3}
  238.         params.sounds = riventest.node_sound_wood_defaults()
  239.         if option == false then params.walkable = false end
  240.     elseif type == 'eat' then           -- edible
  241.         params.groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3}
  242.         params.sounds = riventest.node_sound_wood_defaults()
  243.         params.walkable = false
  244.         params.on_use = minetest.item_eat(option)
  245.     end
  246.     minetest.register_node("riventest:"..nodeid, params)
  247. end
  248.  
  249. STONELIKE('rt1','inward-squared brownstone')
  250. METALLIKE('rt2','flower-patterned metal')
  251. STONELIKE('rt3','lined brownestone')
  252. METALLIKE('rt4','metal block')
  253. METALLIKE('rt5','golden block')
  254. PLANTLIKE('rt6_mushroom','mushroom','veg')
  255. STONELIKE('rt7','outward-squared brownstone')
  256. STONELIKE('rt8','cobble brightstone')
  257. GLOWLIKE('rt9_lamppost','turquiose lamppost','plantlike')
  258. GLOWLIKE('rt17_lamppost','orange lamppost','plantlike')
  259. GLOWLIKE('rt18_lamppost','green lamppost','plantlike')
  260. GLOWLIKE('rt19_lamppost','red lamppost','plantlike')
  261. METALLIKE('rt10','rusted metal block')
  262. STONELIKE('rt11','flower-patterned brightstone')
  263. STONELIKE('rt12','mosaic brightstone')
  264.  
  265.  
  266. SOUNDNODE('1','art (1)','signlike')
  267. SOUNDNODE('2','art (2)','signlike')
  268. SOUNDNODE('3','art (3)','signlike')
  269. TREELIKE('wood','wood')
  270. TREELIKE('woodblue','bluewood')
  271. STONELIKE('stone1','brownstone')
  272. STONELIKE('stone2','graystone')
  273. STONELIKE('stoneblue','bluestone')
  274. METALLIKE('metal','black metal')
  275. METALLIKE('bulkhead','metal bulkhead')
  276. STONELIKE('goldstone1','brightstone')
  277. STONELIKE('goldstone2','goldstone')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement