registrations.lua 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. --[[
  2. More Blocks: registrations
  3. Copyright © 2011-2020 Hugo Locurcio and contributors.
  4. Licensed under the zlib license. See LICENSE.md for more information.
  5. --]]
  6. -- default registrations
  7. local default_nodes = { -- Default stairs/slabs/panels/microblocks:
  8. "stone",
  9. "stone_block",
  10. "cobble",
  11. "mossycobble",
  12. "brick",
  13. "sandstone",
  14. "steelblock",
  15. "goldblock",
  16. "copperblock",
  17. "bronzeblock",
  18. "diamondblock",
  19. "tinblock",
  20. "desert_stone",
  21. "desert_stone_block",
  22. "desert_cobble",
  23. "meselamp",
  24. "glass",
  25. "tree",
  26. "wood",
  27. "jungletree",
  28. "junglewood",
  29. "pine_tree",
  30. "pine_wood",
  31. "acacia_tree",
  32. "acacia_wood",
  33. "aspen_tree",
  34. "aspen_wood",
  35. "obsidian",
  36. "obsidian_block",
  37. "obsidianbrick",
  38. "obsidian_glass",
  39. "stonebrick",
  40. "desert_stonebrick",
  41. "sandstonebrick",
  42. "silver_sandstone",
  43. "silver_sandstone_brick",
  44. "silver_sandstone_block",
  45. "desert_sandstone",
  46. "desert_sandstone_brick",
  47. "desert_sandstone_block",
  48. "sandstone_block",
  49. "coral_skeleton",
  50. "ice",
  51. }
  52. for _, name in pairs(default_nodes) do
  53. local mod = "default"
  54. local nodename = mod .. ":" .. name
  55. local ndef = table.copy(minetest.registered_nodes[nodename])
  56. ndef.sunlight_propagates = true
  57. -- Stone and desert_stone drop cobble and desert_cobble respectively.
  58. if type(ndef.drop) == "string" then
  59. ndef.drop = ndef.drop:gsub(".+:", "")
  60. end
  61. -- Use the primary tile for all sides of cut glasslike nodes and disregard paramtype2.
  62. if #ndef.tiles > 1 and ndef.drawtype and ndef.drawtype:find("glass") then
  63. ndef.tiles = {ndef.tiles[1]}
  64. ndef.paramtype2 = nil
  65. end
  66. mod = "moreblocks"
  67. stairsplus:register_all(mod, name, nodename, ndef)
  68. minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name)
  69. minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
  70. minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
  71. minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name)
  72. end
  73. -- farming registrations
  74. if minetest.get_modpath("farming") then
  75. local farming_nodes = {"straw"}
  76. for _, name in pairs(farming_nodes) do
  77. local mod = "farming"
  78. local nodename = mod .. ":" .. name
  79. local ndef = table.copy(minetest.registered_nodes[nodename])
  80. ndef.sunlight_propagates = true
  81. mod = "moreblocks"
  82. stairsplus:register_all(mod, name, nodename, ndef)
  83. minetest.register_alias_force("stairs:stair_" .. name, mod .. ":stair_" .. name)
  84. minetest.register_alias_force("stairs:stair_outer_" .. name, mod .. ":stair_" .. name .. "_outer")
  85. minetest.register_alias_force("stairs:stair_inner_" .. name, mod .. ":stair_" .. name .. "_inner")
  86. minetest.register_alias_force("stairs:slab_" .. name, mod .. ":slab_" .. name)
  87. end
  88. end
  89. -- wool registrations
  90. if minetest.get_modpath("wool") then
  91. local dyes = {"white", "grey", "black", "red", "yellow", "green", "cyan",
  92. "blue", "magenta", "orange", "violet", "brown", "pink",
  93. "dark_grey", "dark_green"}
  94. for _, name in pairs(dyes) do
  95. local mod = "wool"
  96. local nodename = mod .. ":" .. name
  97. local ndef = table.copy(minetest.registered_nodes[nodename])
  98. ndef.sunlight_propagates = true
  99. -- Prevent dye+cut wool recipy from creating a full wool block.
  100. ndef.groups.wool = nil
  101. stairsplus:register_all(mod, name, nodename, ndef)
  102. end
  103. end
  104. -- basic_materials, keeping the original other-mod-oriented names
  105. -- for backwards compatibility
  106. if minetest.get_modpath("basic_materials") then
  107. stairsplus:register_all("technic","concrete","basic_materials:concrete_block",{
  108. description = "Concrete",
  109. tiles = {"basic_materials_concrete_block.png",},
  110. groups = {cracky=1, level=2, concrete=1},
  111. sounds = default.node_sound_stone_defaults(),
  112. })
  113. minetest.register_alias("prefab:concrete_stair","technic:stair_concrete")
  114. minetest.register_alias("prefab:concrete_slab","technic:slab_concrete")
  115. stairsplus:register_all("gloopblocks", "cement", "basic_materials:cement_block", {
  116. description = "Cement",
  117. tiles = {"basic_materials_cement_block.png"},
  118. groups = {cracky=2, not_in_creative_inventory=1},
  119. sounds = default.node_sound_stone_defaults(),
  120. sunlight_propagates = true,
  121. })
  122. stairsplus:register_all("technic", "brass_block", "basic_materials:brass_block", {
  123. description="Brass Block",
  124. groups={cracky=1, not_in_creative_inventory=1},
  125. tiles={"basic_materials_brass_block.png"},
  126. })
  127. end
  128. -- Alias cuts of split_stone_tile_alt which was renamed checker_stone_tile.
  129. stairsplus:register_alias_all("moreblocks", "split_stone_tile_alt", "moreblocks", "checker_stone_tile")
  130. -- The following LBM is necessary because the name stair_split_stone_tile_alt
  131. -- conflicts with another node and so the alias for that specific node gets
  132. -- ignored.
  133. minetest.register_lbm({
  134. name = "moreblocks:fix_split_stone_tile_alt_name_collision",
  135. nodenames = {"moreblocks:stair_split_stone_tile_alt"},
  136. action = function(pos, node)
  137. minetest.set_node(pos, {
  138. name = "moreblocks:stair_checker_stone_tile",
  139. param2 = minetest.get_node(pos).param2
  140. })
  141. minetest.log('action', "LBM replaced " .. node.name ..
  142. " at " .. minetest.pos_to_string(pos))
  143. end,
  144. })