local function hudkit() return { players = {}, add = function(self, player, id, def) local name = player:get_player_name() local elements = self.players[name] if not elements then self.players[name] = {} elements = self.players[name] end elements[id] = player:hud_add(def) return true end, exists = function(self, player, id) if not player then return false end local name = player:get_player_name() local elements = self.players[name] if not elements or not elements[id] then return false end return true end, change = function(self, player, id, stat, value) if not player then return false end local name = player:get_player_name() local elements = self.players[name] if not elements or not elements[id] then return false end player:hud_change(elements[id], stat, value) return true end, remove = function(self, player, id) local name = player:get_player_name() local elements = self.players[name] if not elements or not elements[id] then return false end player:hud_remove(elements[id]) elements[id] = nil return true end } end ctf.hud = hudkit() minetest.register_on_leaveplayer(function(player) ctf.hud.players[player:get_player_name()] = nil end) function ctf.hud.update(player) if not player then return end local name = player:get_player_name() local player_data = ctf.player(name) if not player_data or not player_data.team or not ctf.team(player_data.team) then return end -- Team Identifier local color = ctf.flag_colors[ctf.team(player_data.team).data.color] if not color then color = "0x000000" end player:set_nametag_attributes({ color = "0xFF" .. string.sub(color, 3) }) if not ctf.hud:exists(player, "ctf:hud_team") then return ctf.hud:add(player, "ctf:hud_team", { hud_elem_type = "text", position = {x = 1, y = 0}, scale = {x = 100, y = 100}, text = player_data.team, number = color, offset = {x=-100, y = 20} }) else ctf.hud:change(player, "ctf:hud_team", "text", player_data.team) ctf.hud:change(player, "ctf:hud_team", "number", color) end end local count = 0 function ctf.hud.updateAll() count = 0 if not ctf.setting("hud") then return end local players = minetest.get_connected_players() for i = 1, #players do ctf.hud.update(players[i]) end end minetest.register_globalstep(function(delta) count = count + delta if count > 10 then ctf.hud.updateAll() end end)