Fix some item HUD bugs

This commit is contained in:
Wuzzy 2017-06-06 03:37:49 +02:00
parent 1becc44732
commit bae4a9786f
1 changed files with 17 additions and 1 deletions

View File

@ -1,6 +1,7 @@
-- Based on 4itemnames mod by 4aiman
local wield = {}
local wieldindex = {}
local huds = {}
local dtimes = {}
local dlimit = 3 -- HUD element will be hidden after this many seconds
@ -21,6 +22,16 @@ end
minetest.register_on_joinplayer(function(player)
set_hud(player)
local name = player:get_player_name()
wield[name] = player:get_wielded_item():get_name()
wieldindex[name] = player:get_wield_index()
end)
minetest.register_on_leaveplayer(function(player)
local name = player:get_player_name()
wield[name] = nil
wieldindex[name] = nil
end)
minetest.register_globalstep(function(dtime)
@ -28,6 +39,7 @@ minetest.register_globalstep(function(dtime)
local player_name = player:get_player_name()
local wstack = player:get_wielded_item()
local wname = wstack:get_name()
local windex = player:get_wield_index()
if dtimes[player_name] and dtimes[player_name] < dlimit then
dtimes[player_name] = dtimes[player_name] + dtime
@ -36,10 +48,14 @@ minetest.register_globalstep(function(dtime)
end
end
if wname ~= wield[player_name] then
-- Update HUD when wielded item or wielded index changed
if wname ~= wield[player_name] or windex ~= wieldindex[player_name] then
wieldindex[player_name] = windex
wield[player_name] = wname
dtimes[player_name] = 0
if huds[player_name] then
local def = minetest.registered_items[wname]
local meta = wstack:get_meta()