init.lua 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. -- WALL BUTTON
  2. -- A button that when pressed emits power for 1 second
  3. -- and then turns off again
  4. mesecon.button_turnoff = function (pos)
  5. local node = minetest.get_node(pos)
  6. if node.name ~= "mesecons_button:button_on" then -- has been dug
  7. return
  8. end
  9. minetest.swap_node(pos, {name = "mesecons_button:button_off", param2 = node.param2})
  10. minetest.sound_play("mesecons_button_pop", {pos = pos})
  11. local rules = mesecon.rules.buttonlike_get(node)
  12. mesecon.receptor_off(pos, rules)
  13. end
  14. minetest.register_node("mesecons_button:button_off", {
  15. drawtype = "nodebox",
  16. tiles = {
  17. "jeija_wall_button_sides.png",
  18. "jeija_wall_button_sides.png",
  19. "jeija_wall_button_sides.png",
  20. "jeija_wall_button_sides.png",
  21. "jeija_wall_button_sides.png",
  22. "jeija_wall_button_off.png"
  23. },
  24. paramtype = "light",
  25. paramtype2 = "facedir",
  26. is_ground_content = false,
  27. legacy_wallmounted = true,
  28. walkable = false,
  29. on_rotate = mesecon.buttonlike_onrotate,
  30. sunlight_propagates = true,
  31. selection_box = {
  32. type = "fixed",
  33. fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 }
  34. },
  35. node_box = {
  36. type = "fixed",
  37. fixed = {
  38. { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 }, -- the thin plate behind the button
  39. { -4/16, -2/16, 4/16, 4/16, 2/16, 6/16 } -- the button itself
  40. }
  41. },
  42. groups = {dig_immediate=2, mesecon_needs_receiver = 1},
  43. description = "Button",
  44. on_rightclick = function (pos, node)
  45. minetest.swap_node(pos, {name = "mesecons_button:button_on", param2=node.param2})
  46. mesecon.receptor_on(pos, mesecon.rules.buttonlike_get(node))
  47. minetest.sound_play("mesecons_button_push", {pos=pos})
  48. minetest.get_node_timer(pos):start(1)
  49. end,
  50. sounds = default.node_sound_stone_defaults(),
  51. mesecons = {receptor = {
  52. state = mesecon.state.off,
  53. rules = mesecon.rules.buttonlike_get
  54. }},
  55. on_blast = mesecon.on_blastnode,
  56. })
  57. minetest.register_node("mesecons_button:button_on", {
  58. drawtype = "nodebox",
  59. tiles = {
  60. "jeija_wall_button_sides.png",
  61. "jeija_wall_button_sides.png",
  62. "jeija_wall_button_sides.png",
  63. "jeija_wall_button_sides.png",
  64. "jeija_wall_button_sides.png",
  65. "jeija_wall_button_on.png"
  66. },
  67. paramtype = "light",
  68. paramtype2 = "facedir",
  69. is_ground_content = false,
  70. legacy_wallmounted = true,
  71. walkable = false,
  72. on_rotate = false,
  73. light_source = minetest.LIGHT_MAX-7,
  74. sunlight_propagates = true,
  75. selection_box = {
  76. type = "fixed",
  77. fixed = { -6/16, -6/16, 5/16, 6/16, 6/16, 8/16 }
  78. },
  79. node_box = {
  80. type = "fixed",
  81. fixed = {
  82. { -6/16, -6/16, 6/16, 6/16, 6/16, 8/16 },
  83. { -4/16, -2/16, 11/32, 4/16, 2/16, 6/16 }
  84. }
  85. },
  86. groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon_needs_receiver = 1},
  87. drop = 'mesecons_button:button_off',
  88. description = "Button",
  89. sounds = default.node_sound_stone_defaults(),
  90. mesecons = {receptor = {
  91. state = mesecon.state.on,
  92. rules = mesecon.rules.buttonlike_get
  93. }},
  94. on_timer = mesecon.button_turnoff,
  95. on_blast = mesecon.on_blastnode,
  96. })
  97. minetest.register_craft({
  98. output = "mesecons_button:button_off 2",
  99. recipe = {
  100. {"group:mesecon_conductor_craftable","default:stone"},
  101. }
  102. })