+end
+
+-- saves data to be utilized on next login
+hunger_class.save_data = function(player)
+ if type(player) ~= "string" and player:is_player() then
+ hunger_class.name = player:get_player_name()
+ elseif type(player) == "string" then
+ hunger_class.name = player
+ end
+ if player_hunger_data[hunger_class.name] then
+ for index,integer in hunger_class.pairs(player_hunger_data[hunger_class.name]) do
+ mod_storage:set_int(hunger_class.name..index,integer)
+ end
+ end
+
+ mod_storage:set_int(hunger_class.name.."h_save", 1)
+
+ player_hunger_data[hunger_class.name] = nil
+end
+
+-- is used for shutdowns to save all data
+hunger_class.save_all = function()
+ for name,data in hunger_class.pairs(player_hunger_data) do
+ hunger_class.save_data(name)
+ end
+end
+
+-- an easy translation pool
+hunger_class.satiation_pool = {
+ [0] = 1,
+ [0.5] = 3,
+ [1] = 6,
+ [2] = 8,
+ [3] = 1
+}
+-- ticks up the exhaustion when counting down satiation
+hunger_class.tick_up_satiation = function(m_data,exhaustion)
+ return(exhaustion + hunger_class.satiation_pool[m_data])
+end
+
+-- an easy translation pool
+hunger_class.hunger_pool = {
+ [0] = 1,
+ [0.5] = 2,
+ [1] = 3,
+ [2] = 4,
+ [3] = 1
+}
+-- ticks up the exhaustion when counting down hunger
+hunger_class.tick_up_hunger = function(m_data,exhaustion)
+ return(exhaustion + hunger_class.hunger_pool[m_data])
+end
+
+-- allows other mods to set hunger data
+hunger_pointer.set_data = function(player,data)
+ hunger_class.name = player:get_player_name()
+ if not player_hunger_data[hunger_class.name] then
+ player_hunger_data[hunger_class.name] = {}
+ end
+
+ for index,i_data in hunger_class.pairs(data) do
+ player_hunger_data[hunger_class.name][index] = i_data
+ end
+
+ if data.hunger then
+ hud_manager.change_hud({
+ player = player ,
+ hud_name = "hunger",
+ element = "number",
+ data = data.hunger
+ })
+ end
+end
+
+-- allows other mods to index hunger data
+hunger_pointer.get_data = function(player,requested_data)
+ hunger_class.name = player:get_player_name()
+ if player_hunger_data[hunger_class.name] then
+ hunger_class.i_data = {}
+ hunger_class.count = 0
+ for _,i_data in hunger_class.pairs(requested_data) do
+ if player_hunger_data[hunger_class.name][i_data] then
+ hunger_class.i_data[i_data] = player_hunger_data[hunger_class.name][i_data]
+ hunger_class.count = hunger_class.count + 1
+ end
+ end
+ if hunger_class.count > 0 then
+ return(hunger_class.i_data)
+ else
+ return(nil)
+ end
+ end
+ return(nil)
+end
+
+-- saves specific users data for when they relog
+minetest.register_on_leaveplayer(function(player)
+ hunger_class.save_data(player)
+ hunger_class.terminate(player)
+end)
+
+-- save all data to mod storage on shutdown
+minetest.register_on_shutdown(function()
+ hunger_class.save_all()
+end)
+
+-- create new data for hunger per player
+minetest.register_on_joinplayer(function(player)
+ hunger_class.name = player:get_player_name()
+ hunger_class.data = hunger_class.load_data(player)
+
+ hunger_class.set_data(player,hunger_class.data)
+
+ hud_manager.add_hud(player,"hunger_bg",{