Skip to content

Commit 2837285

Browse files
committed
Improve playertag code
1 parent d0a5a4f commit 2837285

File tree

1 file changed

+39
-24
lines changed

1 file changed

+39
-24
lines changed

mods/other/playertag/init.lua

+39-24
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,56 @@ playertag = {
99
TYPE_ENTITY = TYPE_ENTITY,
1010
}
1111

12+
local function remove_entity_tag(player)
13+
local tag = players[player:get_player_name()]
14+
if tag then
15+
if tag.entity then
16+
tag.entity.object:remove()
17+
tag.entity = nil
18+
end
19+
20+
if tag.nametag_entity then
21+
tag.nametag_entity.object:remove()
22+
tag.nametag_entity = nil
23+
end
24+
25+
if tag.symbol_entity then
26+
tag.symbol_entity.object:remove()
27+
tag.symbol_entity = nil
28+
end
29+
end
30+
end
31+
1232
local function add_entity_tag(player, old_observers)
33+
local pname = player:get_player_name()
34+
local ppos = player:get_pos()
35+
1336
-- Hide fixed nametag
1437
player:set_nametag_attributes({
1538
color = {a = 0, r = 0, g = 0, b = 0}
1639
})
1740

18-
local ent = minetest.add_entity(player:get_pos(), "playertag:tag")
41+
remove_entity_tag(player)
42+
43+
local ent = minetest.add_entity(ppos, "playertag:tag")
1944
local ent2 = false
2045
local ent3 = false
2146

47+
if not ent then
48+
minetest.after(1, add_entity_tag, player, old_observers)
49+
return
50+
end
51+
2252
if ent.set_observers then
23-
ent2 = minetest.add_entity(player:get_pos(), "playertag:tag")
53+
ent2 = minetest.add_entity(ppos, "playertag:tag")
2454
ent2:set_observers(old_observers.nametag_entity or {})
2555
ent2:set_properties({
26-
nametag = player:get_player_name(),
56+
nametag = pname,
2757
nametag_color = "#EEFFFFDD",
2858
nametag_bgcolor = "#0000002D"
2959
})
3060

31-
ent3 = minetest.add_entity(player:get_pos(), "playertag:tag")
61+
ent3 = minetest.add_entity(ppos, "playertag:tag")
3262
ent3:set_observers(old_observers.symbol_entity or {})
3363
ent3:set_properties({
3464
collisionbox = { 0, 0, 0, 0, 0, 0 },
@@ -40,9 +70,9 @@ local function add_entity_tag(player, old_observers)
4070

4171
-- Build name from font texture
4272
local texture = "npcf_tag_bg.png"
43-
local x = math.floor(134 - ((player:get_player_name():len() * 11) / 2))
73+
local x = math.floor(134 - ((pname:len() * 11) / 2))
4474
local i = 0
45-
player:get_player_name():gsub(".", function(char)
75+
pname:gsub(".", function(char)
4676
local n = "_"
4777
if char:byte() > 96 and char:byte() < 123 or char:byte() > 47 and char:byte() < 58 or char == "-" then
4878
n = char
@@ -64,24 +94,9 @@ local function add_entity_tag(player, old_observers)
6494
end
6595

6696
-- Store
67-
players[player:get_player_name()].entity = ent:get_luaentity()
68-
players[player:get_player_name()].nametag_entity = ent2 and ent2:get_luaentity()
69-
players[player:get_player_name()].symbol_entity = ent3 and ent3:get_luaentity()
70-
end
71-
72-
local function remove_entity_tag(player)
73-
local tag = players[player:get_player_name()]
74-
if tag and tag.entity then
75-
tag.entity.object:remove()
76-
77-
if tag.nametag_entity then
78-
tag.nametag_entity.object:remove()
79-
end
80-
81-
if tag.symbol_entity then
82-
tag.symbol_entity.object:remove()
83-
end
84-
end
97+
players[pname].entity = ent:get_luaentity()
98+
players[pname].nametag_entity = ent2 and ent2:get_luaentity()
99+
players[pname].symbol_entity = ent3 and ent3:get_luaentity()
85100
end
86101

87102
local function update(player, settings)

0 commit comments

Comments
 (0)