summaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua54
1 files changed, 54 insertions, 0 deletions
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..ed855ec
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,54 @@
+hunger = {}
+hunger.food = {}
+
+HUNGER_TICK = 800 -- time in seconds after that 1 hunger point is taken
+HUNGER_HEALTH_TICK = 4 -- time in seconds after player gets healed/damaged
+HUNGER_MOVE_TICK = 0.5 -- time in seconds after the movement is checked
+
+HUNGER_EXHAUST_DIG = 3 -- exhaustion increased this value after digged node
+HUNGER_EXHAUST_PLACE = 1 -- exhaustion increased this value after placed
+HUNGER_EXHAUST_MOVE = 1.5 -- exhaustion increased this value if player movement detected
+HUNGER_EXHAUST_LVL = 160 -- at what exhaustion player saturation gets lowered
+
+HUNGER_HEAL = 1 -- number of HP player gets healed after HUNGER_HEALTH_TICK
+HUNGER_HEAL_LVL = 15 -- lower level of saturation needed to get healed
+HUNGER_STARVE = 1 -- number of HP player gets damaged by hunger after HUNGER_HEALTH_TICK
+HUNGER_STARVE_LVL = 3 -- level of staturation that causes starving
+
+HUNGER_MAX = 30 -- maximum level of saturation
+
+
+local modpath = minetest.get_modpath("hunger")
+dofile(modpath .. "/functions.lua")
+dofile(modpath .. "/food.lua")
+dofile(modpath .. "/legacy.lua")
+
+
+-- Callbacks
+if minetest.setting_getbool("enable_damage") then
+ minetest.register_on_joinplayer(function(player)
+ local inv = player:get_inventory()
+ inv:set_size("hunger", 1)
+
+ local name = player:get_player_name()
+ hunger[name] = {}
+ hunger[name].lvl = hunger.read(player)
+ hunger[name].exhaus = 0
+ local lvl = hunger[name].lvl
+ if lvl > 20 then
+ lvl = 20
+ end
+ minetest.after(0.8, function()
+ hud.change_item(player, "hunger", {offset = "item", item_name = "air"})
+ hud.change_item(player, "hunger", {number = lvl, max = 20})
+ end)
+ end)
+
+ -- for exhaustion
+ minetest.register_on_placenode(hunger.handle_node_actions)
+ minetest.register_on_dignode(hunger.handle_node_actions)
+ minetest.register_on_item_eat(hunger.eat)
+ minetest.register_on_respawnplayer(function(player)
+ hunger.update_hunger(player, 20)
+ end)
+end