crossover.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. local function crossover_get_rules(node)
  2. return {
  3. {--first wire
  4. {x=-1,y=0,z=0},
  5. {x=1,y=0,z=0},
  6. },
  7. {--second wire
  8. {x=0,y=0,z=-1},
  9. {x=0,y=0,z=1},
  10. },
  11. }
  12. end
  13. local crossover_states = {
  14. "mesecons_extrawires:crossover_off",
  15. "mesecons_extrawires:crossover_01",
  16. "mesecons_extrawires:crossover_10",
  17. "mesecons_extrawires:crossover_on",
  18. }
  19. minetest.register_node("mesecons_extrawires:crossover_off", {
  20. description = "Insulated Mesecon Crossover",
  21. drawtype = "mesh",
  22. mesh = "mesecons_extrawires_crossover.b3d",
  23. tiles = {
  24. "jeija_insulated_wire_ends_off.png",
  25. "jeija_insulated_wire_sides_off.png",
  26. "jeija_insulated_wire_sides_off.png",
  27. "jeija_insulated_wire_ends_off.png"
  28. },
  29. paramtype = "light",
  30. is_ground_content = false,
  31. walkable = false,
  32. stack_max = 99,
  33. selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
  34. groups = {dig_immediate=3, mesecon=3},
  35. sounds = default.node_sound_defaults(),
  36. mesecons = {
  37. conductor = {
  38. states = crossover_states,
  39. rules = crossover_get_rules(),
  40. }
  41. },
  42. on_blast = mesecon.on_blastnode,
  43. })
  44. minetest.register_node("mesecons_extrawires:crossover_01", {
  45. description = "You hacker you!",
  46. drop = "mesecons_extrawires:crossover_off",
  47. drawtype = "mesh",
  48. mesh = "mesecons_extrawires_crossover.b3d",
  49. tiles = {
  50. "jeija_insulated_wire_ends_on.png",
  51. "jeija_insulated_wire_sides_on.png",
  52. "jeija_insulated_wire_sides_off.png",
  53. "jeija_insulated_wire_ends_off.png"
  54. },
  55. paramtype = "light",
  56. is_ground_content = false,
  57. walkable = false,
  58. stack_max = 99,
  59. selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
  60. groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
  61. sounds = default.node_sound_defaults(),
  62. mesecons = {
  63. conductor = {
  64. states = crossover_states,
  65. rules = crossover_get_rules(),
  66. }
  67. },
  68. on_blast = mesecon.on_blastnode,
  69. })
  70. minetest.register_node("mesecons_extrawires:crossover_10", {
  71. description = "You hacker you!",
  72. drop = "mesecons_extrawires:crossover_off",
  73. drawtype = "mesh",
  74. mesh = "mesecons_extrawires_crossover.b3d",
  75. tiles = {
  76. "jeija_insulated_wire_ends_off.png",
  77. "jeija_insulated_wire_sides_off.png",
  78. "jeija_insulated_wire_sides_on.png",
  79. "jeija_insulated_wire_ends_on.png"
  80. },
  81. paramtype = "light",
  82. is_ground_content = false,
  83. walkable = false,
  84. stack_max = 99,
  85. selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
  86. groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
  87. sounds = default.node_sound_defaults(),
  88. mesecons = {
  89. conductor = {
  90. states = crossover_states,
  91. rules = crossover_get_rules(),
  92. }
  93. },
  94. on_blast = mesecon.on_blastnode,
  95. })
  96. minetest.register_node("mesecons_extrawires:crossover_on", {
  97. description = "You hacker you!",
  98. drop = "mesecons_extrawires:crossover_off",
  99. drawtype = "mesh",
  100. mesh = "mesecons_extrawires_crossover.b3d",
  101. tiles = {
  102. "jeija_insulated_wire_ends_on.png",
  103. "jeija_insulated_wire_sides_on.png",
  104. "jeija_insulated_wire_sides_on.png",
  105. "jeija_insulated_wire_ends_on.png"
  106. },
  107. paramtype = "light",
  108. is_ground_content = false,
  109. walkable = false,
  110. stack_max = 99,
  111. selection_box = {type="fixed", fixed={-16/32, -16/32, -16/32, 16/32, -5/32, 16/32}},
  112. groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
  113. sounds = default.node_sound_defaults(),
  114. mesecons = {
  115. conductor = {
  116. states = crossover_states,
  117. rules = crossover_get_rules(),
  118. }
  119. },
  120. on_blast = mesecon.on_blastnode,
  121. })
  122. minetest.register_craft({
  123. type = "shapeless",
  124. output = "mesecons_extrawires:crossover_off",
  125. recipe = {
  126. "mesecons_insulated:insulated_off",
  127. "mesecons_insulated:insulated_off",
  128. },
  129. })
  130. minetest.register_craft({
  131. type = "shapeless",
  132. output = "mesecons_insulated:insulated_off 2",
  133. recipe = {
  134. "mesecons_extrawires:crossover_off",
  135. },
  136. })