init.lua 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. if not minetest.global_exists("heal") then heal = {} end
  2. heal.modpath = minetest.get_modpath("heal")
  3. minetest.register_privilege("heal", {
  4. description = "Player can heal other players or themselves.",
  5. give_to_singleplayer = false,
  6. })
  7. -- API function, can be called by other mods.
  8. function heal.heal_health_and_hunger(pname)
  9. local player = minetest.get_player_by_name(pname)
  10. if not player then return end
  11. local was_dead = false
  12. if player:get_hp() == 0 then
  13. was_dead = true
  14. end
  15. local hp_max = pova.get_active_modifier(player, "properties").hp_max
  16. player:set_hp(hp_max, {reason="heal_command"})
  17. hunger.update_hunger(player, 30)
  18. sprint.set_stamina(player, SPRINT_STAMINA)
  19. portal_sickness.reset(pname)
  20. bones.nohack.on_respawnplayer(player)
  21. if was_dead then
  22. minetest.close_formspec(pname, "")
  23. end
  24. end
  25. minetest.register_chatcommand("heal", {
  26. params = "[playername]",
  27. description = "Heal specified player, or heal self if called without arguments.",
  28. privs = {heal=true},
  29. func = function(name, param)
  30. if param == nil or param == "" then
  31. minetest.chat_send_player(name, "# Server: Healing player <" .. rename.gpn(name) .. ">.")
  32. heal.heal_health_and_hunger(name)
  33. return true
  34. end
  35. assert(type(param) == "string")
  36. local player = minetest.get_player_by_name(param)
  37. if not player then
  38. minetest.chat_send_player(name, "# Server: Player <" .. rename.gpn(param) .. "> not found.")
  39. return false
  40. end
  41. minetest.chat_send_player(name, "# Server: Healing player <" .. rename.gpn(param) .. ">.")
  42. minetest.chat_send_player(param, "# Server: Player <" .. rename.gpn(name) .. "> healed you.")
  43. heal.heal_health_and_hunger(param)
  44. return true
  45. end
  46. })