nodes.lua 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. --Bathroom--
  2. minetest.register_node("ma_pops_furniture:bath_faucet", {
  3. description = "Bathroom Faucet",
  4. tiles = {
  5. "mp_knob_top.png",
  6. "mp_knob_bottom.png",
  7. "mp_knob_right.png",
  8. "mp_knob_left.png",
  9. "mp_knob_back.png",
  10. "mp_knob_front.png"
  11. },
  12. drawtype = "nodebox",
  13. paramtype = "light",
  14. paramtype2 = "facedir",
  15. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  16. node_box = {
  17. type = "fixed",
  18. fixed = {
  19. {-0.0625, -0.5, 0.3125, 0.0625, -0.1875, 0.4375},
  20. {-0.0625, -0.1875, 0.125, 0.0625, -0.125, 0.4375},
  21. {0.125, -0.25, 0.25, 0.25, -0.0625, 0.4375},
  22. {-0.25, -0.25, 0.25, -0.125, -0.0625, 0.4375},
  23. {-0.0625, -0.25, 0.125, 0.0625, -0.125, 0.1875},
  24. {-0.125, -0.1875, 0.3125, 0.125, -0.125, 0.375},
  25. },
  26. }
  27. })
  28. minetest.register_node("ma_pops_furniture:toilet_paper_roll_dispenser", {
  29. description = "Toilet Paper Roll Dispenser",
  30. tiles = {
  31. "mp_tp_top.png",
  32. "mp_tp_bottom.png",
  33. "mp_tp_right.png",
  34. "mp_tp_left.png",
  35. "mp_tp_back.png",
  36. "mp_tp_front.png"
  37. },
  38. drawtype = "nodebox",
  39. paramtype = "light",
  40. paramtype2 = "facedir",
  41. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  42. node_box = {
  43. type = "fixed",
  44. fixed = {
  45. {-0.3125, -0.1875, 0.4375, 0.3125, 0.125, 0.5},
  46. {-0.1875, -0.125, 0.25, 0.1875, 0.0625, 0.4375},
  47. {-0.25, -0.0625, 0.3125, 0.25, 0, 0.5},
  48. },
  49. }
  50. })
  51. minetest.register_node('ma_pops_furniture:toilet_open', {
  52. description = 'Toilet',
  53. drawtype = 'mesh',
  54. mesh = 'FM_toilet_open.obj',
  55. tiles = {{name='default_coral_skeleton.png'},{name='default_wood.png'}},
  56. groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1, not_in_creative_inventory=1},
  57. --inventory_image = 'fm_chair_stone.png',
  58. paramtype = 'light',
  59. paramtype2 = 'facedir',
  60. sounds = default.node_sound_wood_defaults(),
  61. selection_box = {
  62. type = 'fixed',
  63. fixed = {
  64. {-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
  65. {-.35, 0, .2, .35, .5, .5},
  66. }
  67. },
  68. collision_box = {
  69. fixed = {
  70. {-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
  71. {-.35, 0, .2, .35, .5, .5},
  72. }
  73. },
  74. on_rightclick = function(pos, node, clicker)
  75. ma_pops_furniture.sit(pos, node, clicker)
  76. end,
  77. on_punch = function (pos, node, puncher)
  78. node.name = "ma_pops_furniture:toilet_close"
  79. minetest.set_node(pos, node)
  80. end,
  81. })
  82. minetest.register_node('ma_pops_furniture:toilet_close', {
  83. description = 'Toilet',
  84. drawtype = 'mesh',
  85. mesh = 'FM_toilet_close.obj',
  86. tiles = {{name='default_coral_skeleton.png'},{name='default_wood.png'}},
  87. groups = {choppy=2, oddly_breakably_by_hand=2, furniture=1},
  88. paramtype = 'light',
  89. paramtype2 = 'facedir',
  90. sounds = default.node_sound_wood_defaults(),
  91. selection_box = {
  92. type = 'fixed',
  93. fixed = {
  94. {-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
  95. {-.35, 0, .2, .35, .5, .5},
  96. }
  97. },
  98. collision_box = {
  99. fixed = {
  100. {-.35, -.5, -.35, .35, 0, .5}, -- Right, Bottom, Back, Left, Top, Front
  101. {-.35, 0, .2, .35, .5, .5},
  102. }
  103. },
  104. on_rightclick = function(pos, node, clicker)
  105. ma_pops_furniture.sit(pos, node, clicker)
  106. end,
  107. on_punch = function (pos, node, puncher)
  108. node.name = "ma_pops_furniture:toilet_open"
  109. minetest.set_node(pos, node)
  110. end,
  111. })
  112. minetest.register_node("ma_pops_furniture:br_sink", {
  113. description = "Sink (Bathroom)",
  114. tiles = {
  115. "mp_hw_top.png",
  116. "mp_hw_bottom.png",
  117. "mp_hw_right.png",
  118. "mp_hw_left.png",
  119. "mp_hw_back.png",
  120. "mp_hw_front.png"
  121. },
  122. drawtype = "nodebox",
  123. paramtype = "light",
  124. paramtype2 = "facedir",
  125. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  126. node_box = {
  127. type = "fixed",
  128. fixed = {
  129. {-0.4375, 0.25, -0.3125, 0.4375, 0.5, 0.5},
  130. {-0.125, -0.5, 0.125, 0.125, 0.25, 0.4375},
  131. },
  132. }
  133. })
  134. minetest.register_node("ma_pops_furniture:mirror_closed", {
  135. description = "Mirror",
  136. tiles = {
  137. "mp_mirror_top.png",
  138. "mp_mirror_bottom.png",
  139. "mp_mirror_right.png",
  140. "mp_mirror_left.png",
  141. "default_wood.png",
  142. "mp_mirror_front.png"
  143. },
  144. drawtype = "nodebox",
  145. paramtype = "light",
  146. paramtype2 = "facedir",
  147. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  148. on_punch = function(pos, node, puncher)
  149. minetest.env:add_node(pos, {name = "ma_pops_furniture:mirror", param2 = node.param2})
  150. ma_pops_furniture.window_operate( pos, "ma_pops_furniture:mirror_closed", "ma_pops_furniture:mirror" );
  151. end,
  152. node_box = {
  153. type = "fixed",
  154. fixed = {
  155. {-0.4375, -0.375, 0.3125, 0.4375, 0.5, 0.5},
  156. {0, -0.375, 0.25, 0.4375, 0.5, 0.3125},
  157. {-0.4375, -0.375, 0.25, 2.98023e-008, 0.5, 0.3125},
  158. },
  159. }
  160. })
  161. minetest.register_node("ma_pops_furniture:mirror", {
  162. description = "Mirror (Open)",
  163. tiles = {
  164. "mp_mirror_open_top.png",
  165. "mp_mirror_open_bottom.png",
  166. "mp_mirror_open_right.png",
  167. "mp_mirror_open_left.png",
  168. "mp_mirror_front.png",
  169. "mp_mirror_open_front.png"
  170. },
  171. drawtype = "nodebox",
  172. paramtype = "light",
  173. paramtype2 = "facedir",
  174. drop = "ma_pops_furniture:mirror_closed",
  175. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_creative_inventory = 1},
  176. on_punch = function(pos, node, puncher)
  177. minetest.env:add_node(pos, {name = "ma_pops_furniture:mirror_closed", param2 = node.param2})
  178. ma_pops_furniture.window_operate( pos, "ma_pops_furniture:mirror", "ma_pops_furniture:mirror_closed" );
  179. end,
  180. on_construct = function(pos)
  181. local meta = minetest.env:get_meta(pos)
  182. local inv = meta:get_inventory()
  183. inv:set_size('main', 8*4)
  184. inv:set_size('storage', 4*4)
  185. meta:set_string('formspec',
  186. 'size [9,10]'..
  187. 'bgcolor[#080808BB;true]'..
  188. 'list[current_name;storage;3,1.5;3,3;]'..
  189. 'list[current_player;main;0.5,6.5;8,4;]')
  190. end,
  191. can_dig = function(pos,player)
  192. local meta = minetest.get_meta(pos);
  193. local inv = meta:get_inventory()
  194. return inv:is_empty('storage') and inv:is_empty('storage1')
  195. end,
  196. node_box = {
  197. type = "fixed",
  198. fixed = {
  199. {-0.4375, -0.375, 0.3125, 0.4375, 0.5, 0.5},
  200. {0.4375, -0.375, -0.125, 0.5, 0.5, 0.3125},
  201. {-0.5, -0.375, -0.125, -0.4375, 0.5, 0.3125},
  202. },
  203. }
  204. })
  205. minetest.register_node("ma_pops_furniture:shower_base", {
  206. description = "Shower Base",
  207. tiles = {
  208. "mp_showbas_top.png",
  209. "mp_showbas_top.png",
  210. "mp_showbas_sides.png",
  211. "mp_showbas_sides.png",
  212. "mp_showbas_sides.png",
  213. "mp_showbas_sides.png"
  214. },
  215. drawtype = "nodebox",
  216. paramtype = "light",
  217. paramtype2 = "facedir",
  218. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  219. node_box = {
  220. type = "fixed",
  221. fixed = {
  222. {-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375},
  223. {0.4375, -0.5, -0.5, 0.5, -0.3125, 0.5},
  224. {-0.5, -0.5, 0.4375, 0.5, -0.3125, 0.5},
  225. {-0.5, -0.5, -0.5, -0.4375, -0.3125, 0.5},
  226. {-0.5, -0.5, -0.5, 0.5, -0.3125, -0.4375},
  227. {-0.125, -0.5, 0.125, 0.125, -0.375, 0.375},
  228. }
  229. },
  230. })
  231. minetest.register_node("ma_pops_furniture:shower_top", {
  232. description = "Shower Head",
  233. tiles = {
  234. "mp_shk_top.png",
  235. "mp_shk_bottom.png",
  236. "mp_shk_right.png",
  237. "mp_shk_left.png",
  238. "mp_shk_back.png",
  239. "mp_shk_front.png"
  240. },
  241. drawtype = "nodebox",
  242. paramtype = "light",
  243. paramtype2 = "facedir",
  244. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  245. node_box = {
  246. type = "fixed",
  247. fixed = {
  248. {-0.25, -0.5, 0.4375, 0.25, 0.5, 0.5},
  249. {-0.125, 0.3125, -0.1875, 0.125, 0.4375, 0.25},
  250. {-0.1875, -0.25, 0.375, -0.125, -0.1875, 0.4375},
  251. {0.125, -0.25, 0.375, 0.1875, -0.1875, 0.4375},
  252. {-0.1875, -0.25, 0.3125, -0.125, -0.0625, 0.375},
  253. {0.125, -0.25, 0.3125, 0.1875, -0.0625, 0.375},
  254. {-0.0625, 0.375, 0.25, 0.0625, 0.4375, 0.4375},
  255. },
  256. }
  257. })
  258. --Kitchen/Dining Room--
  259. minetest.register_node("ma_pops_furniture:dw", {
  260. description= "Dishwasher",
  261. tiles = {
  262. "mp_dw_top.png",
  263. "mp_dw_bottom.png",
  264. "mp_dw_left.png",
  265. "mp_dw_right.png",
  266. "mp_dw_back.png",
  267. "mp_dw_front.png"
  268. },
  269. drawtype = "nodebox",
  270. paramtype = "light",
  271. paramtype2 = "facedir",
  272. groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
  273. node_box = {
  274. type = "fixed",
  275. fixed = {
  276. {-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375},
  277. {-0.5, -0.4375, -0.4375, 0.5, 0.5, 0.5},
  278. {-0.5, 0.3125, -0.5, 0.5, 0.5, -0.4375},
  279. {-0.4375, -0.4375, -0.5, 0.4375, 0.25, 0.5},
  280. }
  281. }
  282. })
  283. minetest.register_node("ma_pops_furniture:oven_overhead", {
  284. description= "Oven Overhead",
  285. tiles = {
  286. "mp_camp_top.png",
  287. "mp_camp_bottom.png",
  288. "mp_camp_left.png",
  289. "mp_camp_right.png",
  290. "mp_camp_back.png",
  291. "mp_camp_front.png"
  292. },
  293. drawtype = "nodebox",
  294. paramtype = "light",
  295. paramtype2 = "facedir",
  296. groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
  297. node_box = {
  298. type = "fixed",
  299. fixed = {
  300. {-0.4375, 0.4375, -0.4375, 0.4375, 0.5, 0.4375},
  301. {-0.5, 0.25, -0.5, 0.5, 0.4375, 0.5},
  302. }
  303. }
  304. })
  305. minetest.register_node("ma_pops_furniture:microwave", {
  306. description = "Microwave",
  307. tiles = {
  308. "mp_mw_top.png",
  309. "mp_mw_bottom.png",
  310. "mp_mw_right.png",
  311. "mp_mw_left.png",
  312. "mp_mw_back.png",
  313. "mp_mw_front.png"
  314. },
  315. drawtype = "nodebox",
  316. paramtype = "light",
  317. paramtype2 = "facedir",
  318. groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
  319. node_box = {
  320. type = "fixed",
  321. fixed = {
  322. {-0.4375, -0.4375, -0.3125, 0.4375, 0.0625, 0.3125},
  323. {-0.375, -0.5, -0.25, 0.375, -0.4375, 0.25},
  324. },
  325. }
  326. })
  327. minetest.register_node("ma_pops_furniture:coffee_maker", {
  328. description = "Coffee Maker",
  329. tiles = {
  330. "mp_cof_top.png",
  331. "mp_cof_bottom.png",
  332. "mp_cof_right.png",
  333. "mp_cof_left.png",
  334. "mp_cof_back.png",
  335. "mp_cof_front.png"
  336. },
  337. drawtype = "nodebox",
  338. paramtype = "light",
  339. paramtype2 = "facedir",
  340. groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
  341. node_box = {
  342. type = "fixed",
  343. fixed = {
  344. {-0.4375, -0.5, -0.0625, 0, -0.4375, 0.4375},
  345. {-0.4375, -0.5, 0.3125, 0, 0.1875, 0.4375},
  346. {-0.4375, -0.0625, 0, 0, 0.25, 0.4375},
  347. {-0.375, -0.4375, 0, -0.0625, -0.125, 0.25},
  348. {-0.25, -0.375, -0.125, -0.1875, -0.1875, 0.0625},
  349. }
  350. }
  351. })
  352. minetest.register_node("ma_pops_furniture:toaster", {
  353. description = "Toaster",
  354. tiles = {
  355. "mp_toas_top.png",
  356. "mp_toas_bottom.png",
  357. "mp_toas_right.png",
  358. "mp_toas_left.png",
  359. "mp_toas_back.png",
  360. "mp_toas_front.png"
  361. },
  362. drawtype = "nodebox",
  363. paramtype = "light",
  364. paramtype2 = "facedir",
  365. groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
  366. node_box = {
  367. type = "fixed",
  368. fixed = {
  369. {-0.375, -0.5, 0, 0.375, -0.0625, 0.3125},
  370. {-0.4375, -0.1875, 0.0625, -0.375, -0.125, 0.25},
  371. },
  372. }
  373. })
  374. minetest.register_node("ma_pops_furniture:kitchen_faucet", {
  375. description = "Kitchen Faucet",
  376. tiles = {
  377. "mp_grif_top.png",
  378. "mp_grif_sides.png",
  379. "mp_grif_sides.png",
  380. "mp_grif_sides.png",
  381. "mp_grif_sides.png",
  382. "mp_grif_sides.png"
  383. },
  384. drawtype = "nodebox",
  385. paramtype = "light",
  386. paramtype2 = "facedir",
  387. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  388. node_box = {
  389. type = "fixed",
  390. fixed = {
  391. {-0.0625, -0.5, 0.375, 0.0625, -0.1875, 0.4375},
  392. {-0.0625, -0.1875, 0.0625, 0.0625, -0.125, 0.4375},
  393. {-0.0625, -0.25, 0.0625, 0.0625, -0.1875, 0.125},
  394. {0.125, -0.5, 0.3125, 0.25, -0.375, 0.4375},
  395. {-0.25, -0.5, 0.3125, -0.125, -0.375, 0.4375},
  396. },
  397. }
  398. })
  399. minetest.register_node("ma_pops_furniture:fridge", {
  400. description= "Fridge",
  401. tiles = {
  402. "mp_fridge_top.png",
  403. "mp_fridge_bottom.png",
  404. "mp_fridge_right.png",
  405. "mp_fridge_left.png",
  406. "mp_fridge_back.png",
  407. "mp_fridge_front.png"
  408. },
  409. drawtype = "nodebox",
  410. paramtype = "light",
  411. paramtype2 = "facedir",
  412. groups = {choppy = 2, oddly_breakable_by_hand = 2, furniture = 1},
  413. on_construct = function(pos)
  414. local meta = minetest.env:get_meta(pos)
  415. local inv = meta:get_inventory()
  416. inv:set_size('main', 8*4)
  417. inv:set_size('storage', 6*4)
  418. meta:set_string('formspec',
  419. 'size [9,10]'..
  420. default.gui_bg..
  421. default.gui_bg_img..
  422. default.gui_slots..
  423. 'bgcolor[#080808BB;true]'..
  424. 'list[current_name;storage;1.5,1;6,4;]'..
  425. 'list[current_player;main;0.5,6;8,4;]')
  426. end,
  427. can_dig = function(pos,player)
  428. local meta = minetest.get_meta(pos);
  429. local inv = meta:get_inventory()
  430. return inv:is_empty('storage') and inv:is_empty('storage1')
  431. end,
  432. node_box = {
  433. type = "fixed",
  434. fixed = {
  435. {-0.5, -0.5, -0.3125, 0.5, 0.5, 0.5}, -- NodeBox1
  436. {-0.5, -0.4375, -0.375, 0.4375, 0.5, -0.3125}, -- NodeBox2
  437. {0.3125, -0.25, -0.5, 0.375, 0.25, -0.4375}, -- NodeBox6
  438. {0.3125, -0.25, -0.4375, 0.375, -0.1875, -0.375}, -- NodeBox7
  439. {0.3125, 0.1875, -0.4375, 0.375, 0.25, -0.375}, -- NodeBox8
  440. }
  441. }
  442. })
  443. --Living Room--
  444. local chair2_table = { --name, color, colorize(hex or color name:intensity(1-255))
  445. {'Black', 'black', 'black:225'},
  446. {'Blue', 'blue', 'blue:225'},
  447. {'Brown', 'brown', 'brown:225'},
  448. {'Cyan', 'cyan', 'cyan:200'},
  449. {'Dark Green', 'dark_green', 'green:225'},
  450. {'Dark Grey', 'dark_grey', 'black:200'},
  451. {'Green', 'green', '#32cd32:150'},
  452. {'Grey', 'grey', 'black:100'},
  453. {'Magenta', 'magenta', 'magenta:200'},
  454. {'Orange', 'orange', 'orange:225'},
  455. {'Pink', 'pink', 'pink:225'},
  456. {'Red', 'red', 'red:225'},
  457. {'Violet', 'violet', 'violet:225'},
  458. {'White', 'white', 'white:1'},
  459. {'Yellow', 'yellow', 'yellow:225'},
  460. }
  461. for i in ipairs (chair2_table) do
  462. local name = chair2_table[i][1]
  463. local color = chair2_table[i][2]
  464. local hex = chair2_table[i][3]
  465. local cb = "^([combine:16x16:0,0=mp_cb.png^[mask:mp_mask.png)"
  466. local cf = "^([combine:16x16:0,0=mp_cf.png^[mask:mp_mask.png)"
  467. minetest.register_node("ma_pops_furniture:chair2_"..color, {
  468. description = name.." Arm Chair",
  469. tiles = {"wool_"..color..".png","wool_"..color..".png"..cb,"wool_"..color..".png"..cf,"wool_"..color..".png"..cf,"wool_"..color..".png"..cf,"wool_"..color..".png"..cf,},
  470. drawtype = "nodebox",
  471. paramtype = "light",
  472. paramtype2 = "facedir",
  473. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, furniture = 1, fall_damage_add_percent=-80, bouncy=80},
  474. sounds = {wood = {name="furn_bouncy", gain=0.8}},
  475. on_rightclick = function(pos, node, clicker)
  476. ma_pops_furniture.sit(pos, node, clicker)
  477. end,
  478. node_box = {
  479. type = "fixed",
  480. fixed = {
  481. {-0.4, -0.5, -0.4, -0.3, -0.4, -0.3},
  482. {-0.4, -0.5, 0.4, -0.3, -0.4, 0.3},
  483. {0.4, -0.5, 0.4, 0.3, -0.4, 0.3},
  484. {0.4, -0.5, -0.4, 0.3, -0.4, -0.3},
  485. -----------------------------------
  486. {-0.450, -0.4, -0.450, 0.450, 0.1, 0.450},
  487. {-0.5, 0.1, -0.5, -0.3, 0.3, 0.0},
  488. {0.5, 0.1, -0.5, 0.3, 0.3, 0.0},
  489. {0.450, 0.1, -0.0, -0.450, 0.5, 0.450},
  490. },
  491. }
  492. })
  493. end
  494. --Outside--
  495. minetest.register_node('ma_pops_furniture:birdbath', {
  496. description = 'Birdbath',
  497. drawtype = 'mesh',
  498. mesh = 'FM_birdbath.obj',
  499. tiles = {{name='default_stone.png'},{name='default_water_source_animated.png', animation={type='vertical_frames', aspect_w=16, aspect_h=16, length=2.0}}},
  500. groups = {cracky=2, oddly_breakable_by_hand=5, furniture=1},
  501. paramtype = 'light',
  502. paramtype2 = 'facedir',
  503. sounds = default.node_sound_stone_defaults(),
  504. })