@@ -9,26 +9,56 @@ playertag = {
9
9
TYPE_ENTITY = TYPE_ENTITY ,
10
10
}
11
11
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
+
12
32
local function add_entity_tag (player , old_observers )
33
+ local pname = player :get_player_name ()
34
+ local ppos = player :get_pos ()
35
+
13
36
-- Hide fixed nametag
14
37
player :set_nametag_attributes ({
15
38
color = {a = 0 , r = 0 , g = 0 , b = 0 }
16
39
})
17
40
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" )
19
44
local ent2 = false
20
45
local ent3 = false
21
46
47
+ if not ent then
48
+ minetest .after (1 , add_entity_tag , player , old_observers )
49
+ return
50
+ end
51
+
22
52
if ent .set_observers then
23
- ent2 = minetest .add_entity (player : get_pos () , " playertag:tag" )
53
+ ent2 = minetest .add_entity (ppos , " playertag:tag" )
24
54
ent2 :set_observers (old_observers .nametag_entity or {})
25
55
ent2 :set_properties ({
26
- nametag = player : get_player_name () ,
56
+ nametag = pname ,
27
57
nametag_color = " #EEFFFFDD" ,
28
58
nametag_bgcolor = " #0000002D"
29
59
})
30
60
31
- ent3 = minetest .add_entity (player : get_pos () , " playertag:tag" )
61
+ ent3 = minetest .add_entity (ppos , " playertag:tag" )
32
62
ent3 :set_observers (old_observers .symbol_entity or {})
33
63
ent3 :set_properties ({
34
64
collisionbox = { 0 , 0 , 0 , 0 , 0 , 0 },
@@ -40,9 +70,9 @@ local function add_entity_tag(player, old_observers)
40
70
41
71
-- Build name from font texture
42
72
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 ))
44
74
local i = 0
45
- player : get_player_name () :gsub (" ." , function (char )
75
+ pname :gsub (" ." , function (char )
46
76
local n = " _"
47
77
if char :byte () > 96 and char :byte () < 123 or char :byte () > 47 and char :byte () < 58 or char == " -" then
48
78
n = char
@@ -64,24 +94,9 @@ local function add_entity_tag(player, old_observers)
64
94
end
65
95
66
96
-- 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 ()
85
100
end
86
101
87
102
local function update (player , settings )
0 commit comments