library.lua 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. minetest.register_node('furniture:lectern', {
  2. description = 'Lectern',
  3. drawtype = 'mesh',
  4. mesh = 'furniture_lectern.obj',
  5. tiles = {'furniture_lectern.png',},
  6. overlay_tiles = {{name='furniture_lectern_overlay.png', color='white'}},
  7. paramtype2 = 'colorfacedir',
  8. palette = 'furniture_stain_palette.png',
  9. paramtype = 'light',
  10. selection_box = {
  11. type = 'fixed',
  12. fixed = {-.3, -.5, -.3, .3, .5, .3},
  13. },
  14. collision_box = {
  15. type = 'fixed',
  16. fixed = {-.3, -.5, -.3, .3, .5, .3},
  17. },
  18. groups = {breakable=1},
  19. after_place_node = function(pos, placer)
  20. local meta = minetest.get_meta(pos)
  21. meta:set_string('owner', placer:get_player_name())
  22. meta:set_string('infotext', '')
  23. meta:set_string('title', '')
  24. meta:set_string('content', '')
  25. end,
  26. on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
  27. local name = clicker:get_player_name()
  28. local meta = minetest.get_meta(pos)
  29. local owner = meta:get_string('owner')
  30. local title = meta:get_string('title')
  31. local content = meta:get_string('content')
  32. if owner == name then
  33. meta:set_string('formspec', furniture.lectern_edit_sign(title, content))
  34. else
  35. meta:set_string('formspec', furniture.lectern_view_sign(title, content))
  36. end
  37. end,
  38. on_receive_fields = function(pos, formname, fields, sender)
  39. local meta = minetest.get_meta(pos)
  40. if fields ['save'] then
  41. local player_name = sender:get_player_name()
  42. meta:set_string('infotext', fields.title)
  43. meta:set_string('title', fields.title)
  44. meta:set_string('content', fields.content)
  45. minetest.log("action", (player_name or "").." wrote \""..fields.title.."\" to lectern at "..minetest.pos_to_string(pos))
  46. end
  47. end,
  48. on_punch = furniture.punch
  49. })