Prevent server from crashing when player logs in using specific name
parent
af0267b9f5
commit
c1e604c140
|
@ -20,7 +20,7 @@ end
|
||||||
function hunger.save(player)
|
function hunger.save(player)
|
||||||
local inv = player:get_inventory()
|
local inv = player:get_inventory()
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local value = hunger[name].lvl
|
local value = hunger.players[name].lvl
|
||||||
if not inv or not value then
|
if not inv or not value then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
@ -40,17 +40,17 @@ function hunger.update_hunger(player, new_lvl)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if minetest.setting_getbool("enable_damage") == false then
|
if minetest.setting_getbool("enable_damage") == false then
|
||||||
hunger[name] = 20
|
hunger.players[name] = 20
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local lvl = hunger[name].lvl
|
local lvl = hunger.players[name].lvl
|
||||||
if new_lvl then
|
if new_lvl then
|
||||||
lvl = new_lvl
|
lvl = new_lvl
|
||||||
end
|
end
|
||||||
if lvl > HUNGER_MAX then
|
if lvl > HUNGER_MAX then
|
||||||
lvl = HUNGER_MAX
|
lvl = HUNGER_MAX
|
||||||
end
|
end
|
||||||
hunger[name].lvl = lvl
|
hunger.players[name].lvl = lvl
|
||||||
if lvl > 20 then
|
if lvl > 20 then
|
||||||
lvl = 20
|
lvl = 20
|
||||||
end
|
end
|
||||||
|
@ -65,13 +65,13 @@ function hunger.handle_node_actions(pos, oldnode, player, ext)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
if not name or not hunger[name] then
|
if not name or not hunger.players[name] then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local exhaus = hunger[name].exhaus
|
local exhaus = hunger.players[name].exhaus
|
||||||
if not exhaus then
|
if not exhaus then
|
||||||
hunger[name].exhaus = 0
|
hunger.players[name].exhaus = 0
|
||||||
--return
|
--return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -91,13 +91,13 @@ function hunger.handle_node_actions(pos, oldnode, player, ext)
|
||||||
|
|
||||||
if exhaus > HUNGER_EXHAUST_LVL then
|
if exhaus > HUNGER_EXHAUST_LVL then
|
||||||
exhaus = 0
|
exhaus = 0
|
||||||
local h = tonumber(hunger[name].lvl)
|
local h = tonumber(hunger.players[name].lvl)
|
||||||
if h > 0 then
|
if h > 0 then
|
||||||
update_hunger(player, h - 1)
|
update_hunger(player, h - 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
hunger[name].exhaus = exhaus
|
hunger.players[name].exhaus = exhaus
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ local function hunger_globaltimer(dtime)
|
||||||
if hunger_timer > HUNGER_TICK then
|
if hunger_timer > HUNGER_TICK then
|
||||||
for _,player in ipairs(minetest.get_connected_players()) do
|
for _,player in ipairs(minetest.get_connected_players()) do
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local tab = hunger[name]
|
local tab = hunger.players[name]
|
||||||
if tab then
|
if tab then
|
||||||
local hunger = tab.lvl
|
local hunger = tab.lvl
|
||||||
if hunger > 0 then
|
if hunger > 0 then
|
||||||
|
@ -141,7 +141,7 @@ local function hunger_globaltimer(dtime)
|
||||||
if health_timer > HUNGER_HEALTH_TICK then
|
if health_timer > HUNGER_HEALTH_TICK then
|
||||||
for _,player in ipairs(minetest.get_connected_players()) do
|
for _,player in ipairs(minetest.get_connected_players()) do
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
local tab = hunger[name]
|
local tab = hunger.players[name]
|
||||||
if tab then
|
if tab then
|
||||||
local air = player:get_breath() or 0
|
local air = player:get_breath() or 0
|
||||||
local hp = player:get_hp()
|
local hp = player:get_hp()
|
||||||
|
@ -227,10 +227,10 @@ function hunger.item_eat(hunger_change, replace_with_item, poisen, heal, sound)
|
||||||
return function(itemstack, user, pointed_thing)
|
return function(itemstack, user, pointed_thing)
|
||||||
if itemstack:take_item() ~= nil and user ~= nil then
|
if itemstack:take_item() ~= nil and user ~= nil then
|
||||||
local name = user:get_player_name()
|
local name = user:get_player_name()
|
||||||
if not hunger[name] then
|
if not hunger.players[name] then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
local sat = tonumber(hunger[name].lvl or 0)
|
local sat = tonumber(hunger.players[name].lvl or 0)
|
||||||
local hp = user:get_hp()
|
local hp = user:get_hp()
|
||||||
-- Saturation
|
-- Saturation
|
||||||
if sat < HUNGER_MAX and hunger_change then
|
if sat < HUNGER_MAX and hunger_change then
|
||||||
|
|
9
init.lua
9
init.lua
|
@ -1,4 +1,5 @@
|
||||||
hunger = {}
|
hunger = {}
|
||||||
|
hunger.players = {}
|
||||||
hunger.food = {}
|
hunger.food = {}
|
||||||
|
|
||||||
HUNGER_TICK = 800 -- time in seconds after that 1 hunger point is taken
|
HUNGER_TICK = 800 -- time in seconds after that 1 hunger point is taken
|
||||||
|
@ -31,10 +32,10 @@ if minetest.setting_getbool("enable_damage") then
|
||||||
inv:set_size("hunger", 1)
|
inv:set_size("hunger", 1)
|
||||||
|
|
||||||
local name = player:get_player_name()
|
local name = player:get_player_name()
|
||||||
hunger[name] = {}
|
hunger.players[name] = {}
|
||||||
hunger[name].lvl = hunger.read(player)
|
hunger.players[name].lvl = hunger.read(player)
|
||||||
hunger[name].exhaus = 0
|
hunger.players[name].exhaus = 0
|
||||||
local lvl = hunger[name].lvl
|
local lvl = hunger.players[name].lvl
|
||||||
if lvl > 20 then
|
if lvl > 20 then
|
||||||
lvl = 20
|
lvl = 20
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue