* `set_eye_offset({x=0,y=0,z=0},{x=0,y=0,z=0})`: defines offset value for camera per player
* in first person view
* in third person view (max. values `{x=-10/10,y=-10,15,z=-5/5}`)
-* `get_nametag_color()`
- * returns the color of the nametag as table
- * { a = 0...255, r = 0...255, g = 0...255, b = 0...255 }
-* `set_nametag_color(color)`
- * sets the color of the nametag
- * `color`: { a = 0...255, r = 0...255, g = 0...255, b = 0...255 }
+* `get_nametag_attributes()`
+ * returns a table with the attributes of the nametag of the player
+ * {
+ color = { a = 0...255, r = 0...255, g = 0...255, b = 0...255 }
+ }
+* `set_nametag_attributes(attributes)`
+ * sets the attributes of the nametag of the player
+ * `attributes`:
+ {
+ color = { a = 0...255, r = 0...255, g = 0...255, b = 0...255 }
+ }
### `InvRef`
An `InvRef` is a reference to an inventory.
int rating = readS16(is);
m_armor_groups[name] = rating;
}
- } else if (cmd == GENERIC_CMD_SET_NAMETAG_COLOR) {
+ } else if (cmd == GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES) {
+ u8 version = readU8(is); // forward compatibility
m_nametag_color = readARGB8(is);
if (m_textnode != NULL) {
m_textnode->setTextColor(m_nametag_color);
os<<serializeLongString(gob_cmd_update_physics_override(m_physics_override_speed,
m_physics_override_jump, m_physics_override_gravity, m_physics_override_sneak,
m_physics_override_sneak_glitch)); // 5
- os << serializeLongString(gob_cmd_set_nametag_color(m_nametag_color)); // 6
+ os << serializeLongString(gob_cmd_update_nametag_attributes(m_nametag_color)); // 6
}
else
{
if (m_nametag_sent == false) {
m_nametag_sent = true;
- std::string str = gob_cmd_set_nametag_color(m_nametag_color);
+ std::string str = gob_cmd_update_nametag_attributes(m_nametag_color);
// create message and add to list
ActiveObjectMessage aom(getId(), true, str);
m_messages_out.push(aom);
return os.str();
}
-std::string gob_cmd_set_nametag_color(video::SColor color)
+std::string gob_cmd_update_nametag_attributes(video::SColor color)
{
std::ostringstream os(std::ios::binary);
// command
- writeU8(os, GENERIC_CMD_SET_NAMETAG_COLOR);
+ writeU8(os, GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES);
// parameters
+ writeU8(os, 1); // version for forward compatibility
writeARGB8(os, color);
return os.str();
}
#define GENERIC_CMD_SET_BONE_POSITION 7
#define GENERIC_CMD_SET_ATTACHMENT 8
#define GENERIC_CMD_SET_PHYSICS_OVERRIDE 9
-#define GENERIC_CMD_SET_NAMETAG_COLOR 10
+#define GENERIC_CMD_UPDATE_NAMETAG_ATTRIBUTES 10
#include "object_properties.h"
std::string gob_cmd_set_properties(const ObjectProperties &prop);
std::string gob_cmd_update_attachment(int parent_id, std::string bone, v3f position, v3f rotation);
-std::string gob_cmd_set_nametag_color(video::SColor color);
+std::string gob_cmd_update_nametag_attributes(video::SColor color);
#endif
return 1;
}
-// set_nametag_color(self, color)
-int ObjectRef::l_set_nametag_color(lua_State *L)
+// set_nametag_attributes(self, attributes)
+int ObjectRef::l_set_nametag_attributes(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
ObjectRef *ref = checkobject(L, 1);
if (playersao == NULL)
return 0;
- video::SColor color(255,255,255,255);
- if (!lua_isnil(L, 2))
- color = readARGB8(L, 2);
+ video::SColor color = playersao->getNametagColor();
+ lua_getfield(L, 2, "color");
+ if (!lua_isnil(L, -1))
+ color = readARGB8(L, -1);
playersao->setNametagColor(color);
lua_pushboolean(L, true);
return 1;
}
-// get_nametag_color(self)
-int ObjectRef::l_get_nametag_color(lua_State *L)
+// get_nametag_attributes(self)
+int ObjectRef::l_get_nametag_attributes(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
ObjectRef *ref = checkobject(L, 1);
video::SColor color = playersao->getNametagColor();
+ lua_newtable(L);
lua_newtable(L);
lua_pushnumber(L, color.getAlpha());
lua_setfield(L, -2, "a");
lua_setfield(L, -2, "g");
lua_pushnumber(L, color.getBlue());
lua_setfield(L, -2, "b");
+ lua_setfield(L, -2, "color");
return 1;
}
luamethod(ObjectRef, override_day_night_ratio),
luamethod(ObjectRef, set_local_animation),
luamethod(ObjectRef, set_eye_offset),
- luamethod(ObjectRef, set_nametag_color),
- luamethod(ObjectRef, get_nametag_color),
+ luamethod(ObjectRef, set_nametag_attributes),
+ luamethod(ObjectRef, get_nametag_attributes),
{0,0}
};
// set_eye_offset(self, v3f first pv, v3f third pv)
static int l_set_eye_offset(lua_State *L);
- // set_nametag_color(self, color)
- static int l_set_nametag_color(lua_State *L);
+ // set_nametag_attributes(self, attributes)
+ static int l_set_nametag_attributes(lua_State *L);
- // get_nametag_color(self)
- static int l_get_nametag_color(lua_State *L);
+ // get_nametag_attributes(self)
+ static int l_get_nametag_attributes(lua_State *L);
public:
ObjectRef(ServerActiveObject *object);