streetlamp.lua 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. --[[
  2. Tubelib Addons 2
  3. ================
  4. Copyright (C) 2017-2020 Joachim Stolberg
  5. AGPL v3
  6. See LICENSE.txt for more information
  7. streetlamp.lua:
  8. ]]--
  9. -- Load support for I18n
  10. local S = tubelib_addons2.S
  11. local function switch_on(pos, node)
  12. node.name = "tubelib_addons2:streetlamp_on"
  13. minetest.swap_node(pos, node)
  14. end
  15. local function switch_off(pos, node)
  16. node.name = "tubelib_addons2:streetlamp"
  17. minetest.swap_node(pos, node)
  18. end
  19. minetest.register_node("tubelib_addons2:streetlamp", {
  20. description = S("Tubelib Street Lamp"),
  21. tiles = {
  22. -- up, down, right, left, back, front
  23. 'tubelib_addons2_streetlamp_top.png',
  24. 'tubelib_addons2_streetlamp_top.png',
  25. 'tubelib_addons2_streetlamp_off.png',
  26. },
  27. drawtype = "nodebox",
  28. node_box = {
  29. type = "fixed",
  30. fixed = {
  31. {-5/16, -8/16, -5/16, 5/16, 8/16, 5/16},
  32. {-2/16, -8/16, -2/16, 2/16, 8/16, 2/16},
  33. {-8/16, 4/16, -8/16, 8/16, 5/16, 8/16},
  34. {-5/16, -8/16, -5/16, 5/16, -7/16, 5/16},
  35. },
  36. },
  37. selection_box = {
  38. type = "fixed",
  39. fixed = {-8/16, -8/16, -8/16, 8/16, 8/16, 8/16},
  40. },
  41. after_place_node = function(pos, placer)
  42. local number = tubelib.add_node(pos, "tubelib_addons2:streetlamp")
  43. local meta = minetest.get_meta(pos)
  44. meta:set_string("infotext", S("Tubelib Street Lamp").." "..number)
  45. end,
  46. on_rightclick = function(pos, node, clicker)
  47. if not minetest.is_protected(pos, clicker:get_player_name()) then
  48. switch_on(pos, node)
  49. end
  50. end,
  51. after_dig_node = function(pos)
  52. tubelib.remove_node(pos)
  53. end,
  54. paramtype = "light",
  55. light_source = 0,
  56. sunlight_propagates = true,
  57. paramtype2 = "facedir",
  58. groups = {choppy=2, cracky=2, crumbly=2},
  59. is_ground_content = false,
  60. sounds = default.node_sound_glass_defaults(),
  61. })
  62. minetest.register_node("tubelib_addons2:streetlamp_on", {
  63. description = S("Tubelib Street Lamp"),
  64. tiles = {
  65. -- up, down, right, left, back, front
  66. 'tubelib_addons2_streetlamp_top.png',
  67. 'tubelib_addons2_streetlamp_top.png',
  68. 'tubelib_addons2_streetlamp.png',
  69. },
  70. drawtype = "nodebox",
  71. node_box = {
  72. type = "fixed",
  73. fixed = {
  74. {-5/16, -8/16, -5/16, 5/16, 8/16, 5/16},
  75. {-8/16, 4/16, -8/16, 8/16, 5/16, 8/16},
  76. },
  77. },
  78. selection_box = {
  79. type = "fixed",
  80. fixed = {-8/16, -8/16, -8/16, 8/16, 8/16, 8/16},
  81. },
  82. on_rightclick = function(pos, node, clicker)
  83. if not minetest.is_protected(pos, clicker:get_player_name()) then
  84. switch_off(pos, node)
  85. end
  86. end,
  87. paramtype = "light",
  88. light_source = minetest.LIGHT_MAX,
  89. sunlight_propagates = true,
  90. paramtype2 = "facedir",
  91. groups = {crumbly=0, not_in_creative_inventory=1},
  92. is_ground_content = false,
  93. sounds = default.node_sound_wood_defaults(),
  94. })
  95. minetest.register_craft({
  96. type = "shapeless",
  97. output = "tubelib_addons2:streetlamp 2",
  98. recipe = {"tubelib:lamp", "default:steel_ingot", "default:glass"},
  99. })
  100. --------------------------------------------------------------- tubelib
  101. tubelib.register_node("tubelib_addons2:streetlamp", {"tubelib_addons2:streetlamp_on"}, {
  102. on_recv_message = function(pos, topic, payload)
  103. local node = minetest.get_node(pos)
  104. if topic == "on" then
  105. switch_on(pos, node)
  106. elseif topic == "off" then
  107. switch_off(pos, node)
  108. end
  109. end,
  110. })
  111. --------------------------------------------------------------- tubelib.