init.lua 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. decals = {}
  2. decals.on_punch = function(pos, node, puncher, pointed_thing)
  3. local player = puncher:get_player_name()
  4. local wield = puncher:get_wielded_item()
  5. local wield_name = wield:get_name()
  6. if minetest.is_protected(pos, player) and not minetest.check_player_privs(puncher, 'protection_bypass') or wield_name == 'creative:tool_breaking' then
  7. return
  8. end
  9. minetest.swap_node(pos, {name = node.name, param2 = node.param2+32})
  10. end
  11. decals.on_rightclick = function(pos, node, clicker)
  12. local player = clicker:get_player_name()
  13. if minetest.is_protected(pos, player) and not minetest.check_player_privs(clicker, 'protection_bypass') then
  14. return
  15. end
  16. minetest.swap_node(pos, {name = node.name, param2 = node.param2-32})
  17. end
  18. function decals.register_decal(name, desc)
  19. minetest.register_node('decals:'..name, {
  20. description = desc,
  21. drawtype = 'mesh',
  22. mesh = 'decals_mesh.obj',
  23. tiles = {'decals_'..name..'.png'},
  24. inventory_image = 'decals_'..name..'.png',
  25. wield_image = 'decals_'..name..'.png',
  26. paramtype = 'light',
  27. paramtype2 = 'colorfacedir',
  28. palette = 'decals_color_palette.png',
  29. sunlight_propagates = true,
  30. use_texture_alpha = 'clip',
  31. walkable = false,
  32. selection_box = {
  33. type = 'fixed',
  34. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  35. },
  36. collision_box = {
  37. type = 'fixed',
  38. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  39. },
  40. groups = {breakable=1},
  41. on_place = minetest.rotate_and_place,
  42. on_rightclick = decals.on_rightclick,
  43. on_punch = decals.on_punch,
  44. })
  45. end
  46. function decals.register_decal_colored(name, desc)
  47. minetest.register_node('decals:'..name, {
  48. description = desc,
  49. drawtype = 'mesh',
  50. mesh = 'decals_mesh.obj',
  51. tiles = {'decals_'..name..'.png'},
  52. inventory_image = 'decals_'..name..'.png',
  53. wield_image = 'decals_'..name..'.png',
  54. paramtype = 'light',
  55. paramtype2 = 'facedir',
  56. sunlight_propagates = true,
  57. use_texture_alpha = 'blend',
  58. walkable = false,
  59. selection_box = {
  60. type = 'fixed',
  61. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  62. },
  63. collision_box = {
  64. type = 'fixed',
  65. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  66. },
  67. groups = {breakable=1},
  68. on_place = minetest.rotate_and_place,
  69. })
  70. end
  71. function decals.register_decal_raillike(name, desc)
  72. minetest.register_node('decals:'..name, {
  73. description = desc,
  74. drawtype = 'raillike',
  75. paramtype = 'light',
  76. tiles = {{name='decals_'..name..'_straight.png'}, {name='decals_'..name..'_curved.png'},
  77. {name='decals_'..name..'_t_junct.png'}, {name='decals_'..name..'_crossing.png'}},
  78. --tiles = {'decals_'..name..'.png' },
  79. inventory_image = 'decals_'..name..'_straight.png',
  80. wield_image = 'decals_'..name..'_straight.png',
  81. sunlight_propagates = true,
  82. use_texture_alpha = 'clip',
  83. walkable = false,
  84. selection_box = {
  85. type = 'fixed',
  86. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  87. },
  88. collision_box = {
  89. type = 'fixed',
  90. fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2},
  91. },
  92. groups = {breakable=1, rails=1},
  93. })
  94. end
  95. dofile(minetest.get_modpath('decals')..'/alphanumeric.lua') --Letters and numbers
  96. dofile(minetest.get_modpath('decals')..'/colored.lua') -- It'ems that are already colored, and don't get colorfacedir
  97. dofile(minetest.get_modpath('decals')..'/shapes.lua') -- Different shapes