armchairs.lua 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. local S = minetest.get_translator("homedecor_seating")
  2. local armchair_cbox = {
  3. type = "fixed",
  4. fixed = {
  5. {-0.5, -0.5, -0.5, 0.5, 0, 0.5 },
  6. {-0.5, -0.5, 0.4, 0.5, 0.5, 0.5 }
  7. }
  8. }
  9. minetest.register_node(":lrfurn:armchair", {
  10. description = S("Armchair"),
  11. drawtype = "mesh",
  12. mesh = "lrfurn_armchair.obj",
  13. tiles = {
  14. "lrfurn_upholstery.png",
  15. { name = "lrfurn_sofa_bottom.png", color = 0xffffffff }
  16. },
  17. paramtype = "light",
  18. paramtype2 = "colorwallmounted",
  19. palette = "unifieddyes_palette_colorwallmounted.png",
  20. inventory_image = "lrfurn_armchair_inv.png",
  21. groups = {snappy=3, ud_param2_colorable = 1},
  22. sounds = default.node_sound_wood_defaults(),
  23. node_box = armchair_cbox,
  24. after_place_node = function(pos, placer, itemstack, pointed_thing)
  25. unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
  26. end,
  27. on_dig = unifieddyes.on_dig,
  28. on_rotate = unifieddyes.fix_after_screwdriver_nsew,
  29. on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
  30. if not clicker:is_player() then
  31. return itemstack
  32. end
  33. pos.y = pos.y-0.5
  34. clicker:setpos(pos)
  35. clicker:set_hp(20)
  36. return itemstack
  37. end
  38. })
  39. homedecor.register("armchair", {
  40. description = S("Armchair"),
  41. mesh = "forniture_armchair.obj",
  42. tiles = {
  43. "wool_white.png",
  44. { name = "wool_dark_grey.png", color = 0xffffffff },
  45. { name = "default_wood.png", color = 0xffffffff }
  46. },
  47. inventory_image = "homedecor_armchair_inv.png",
  48. paramtype2 = "colorwallmounted",
  49. palette = "unifieddyes_palette_colorwallmounted.png",
  50. groups = {snappy=3, ud_param2_colorable = 1},
  51. sounds = default.node_sound_wood_defaults(),
  52. node_box = armchair_cbox,
  53. after_place_node = function(pos, placer, itemstack, pointed_thing)
  54. unifieddyes.fix_rotation_nsew(pos, placer, itemstack, pointed_thing)
  55. end,
  56. on_dig = unifieddyes.on_dig,
  57. on_rotate = unifieddyes.fix_after_screwdriver_nsew,
  58. })
  59. -- crafts
  60. minetest.register_craft({
  61. output = "lrfurn:armchair",
  62. recipe = {
  63. {"wool:white", "", "", },
  64. {"stairs:slab_wood", "", "", },
  65. {"group:stick", "", "", }
  66. }
  67. })
  68. minetest.register_craft({
  69. output = "lrfurn:armchair",
  70. recipe = {
  71. {"wool:white", "", "", },
  72. {"moreblocks:slab_wood", "", "", },
  73. {"group:stick", "", "", }
  74. }
  75. })
  76. unifieddyes.register_color_craft({
  77. output = "lrfurn:armchair",
  78. palette = "wallmounted",
  79. type = "shapeless",
  80. neutral_node = "lrfurn:armchair",
  81. recipe = {
  82. "NEUTRAL_NODE",
  83. "MAIN_DYE"
  84. }
  85. })
  86. minetest.register_craft({
  87. output = "homedecor:armchair 2",
  88. recipe = {
  89. { "wool:white",""},
  90. { "group:wood","group:wood" },
  91. { "wool:white","wool:white" },
  92. },
  93. })
  94. unifieddyes.register_color_craft({
  95. output = "homedecor:armchair",
  96. palette = "wallmounted",
  97. type = "shapeless",
  98. neutral_node = "homedecor:armchair",
  99. recipe = {
  100. "NEUTRAL_NODE",
  101. "MAIN_DYE"
  102. }
  103. })
  104. minetest.register_craft({
  105. type = "fuel",
  106. recipe = "homedecor:armchair",
  107. burntime = 30,
  108. })
  109. minetest.register_alias('armchair', 'homedecor:armchair')
  110. -- convert old static nodes to param2 color
  111. lrfurn.old_static_armchairs = {}
  112. for _, color in ipairs(lrfurn.colors) do
  113. table.insert(lrfurn.old_static_armchairs, "lrfurn:armchair_"..color)
  114. end
  115. minetest.register_lbm({
  116. name = ":lrfurn:convert_armchairs",
  117. label = "Convert lrfurn armchairs to use param2 color",
  118. run_at_every_load = false,
  119. nodenames = lrfurn.old_static_armchairs,
  120. action = function(pos, node)
  121. local name = node.name
  122. local color = string.sub(name, string.find(name, "_")+1)
  123. if color == "red" then
  124. color = "medium_red"
  125. elseif color == "dark_green" then
  126. color = "medium_green"
  127. elseif color == "magenta" then
  128. color = "medium_magenta"
  129. elseif color == "cyan" then
  130. color = "medium_cyan"
  131. end
  132. local paletteidx, _ = unifieddyes.getpaletteidx("unifieddyes:"..color, "wallmounted")
  133. local old_fdir = math.floor(node.param2 % 32)
  134. local new_fdir = 3
  135. if old_fdir == 0 then
  136. new_fdir = 3
  137. elseif old_fdir == 1 then
  138. new_fdir = 4
  139. elseif old_fdir == 2 then
  140. new_fdir = 2
  141. elseif old_fdir == 3 then
  142. new_fdir = 5
  143. end
  144. local param2 = paletteidx + new_fdir
  145. minetest.set_node(pos, { name = "lrfurn:armchair", param2 = param2 })
  146. local meta = minetest.get_meta(pos)
  147. meta:set_string("dye", "unifieddyes:"..color)
  148. end
  149. })
  150. if minetest.settings:get("log_mods") then
  151. minetest.log("action", "[lrfurn/armchairs] Loaded!")
  152. end