From ecd5c5f9206437c320da029680cf1d053b644761 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Wed, 10 Aug 2011 21:43:40 +0200 Subject: Clients inform server on wielded item This is done with the new TOSERVER_PLAYERITEM message, that informs the server on the index of the wielded item. --- src/client.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/client.cpp') diff --git a/src/client.cpp b/src/client.cpp index 2687d01e0..398b2602d 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -1864,6 +1864,28 @@ void Client::sendPlayerPos() Send(0, data, false); } +void Client::sendPlayerItem(u16 item) +{ + Player *myplayer = m_env.getLocalPlayer(); + if(myplayer == NULL) + return; + + u16 our_peer_id = m_con.GetPeerID(); + + // Set peer id if not set already + if(myplayer->peer_id == PEER_ID_INEXISTENT) + myplayer->peer_id = our_peer_id; + // Check that an existing peer_id is the same as the connection's + assert(myplayer->peer_id == our_peer_id); + + SharedBuffer data(2+2); + writeU16(&data[0], TOSERVER_PLAYERITEM); + writeU16(&data[2], item); + + // Send as reliable + Send(0, data, true); +} + void Client::removeNode(v3s16 p) { //JMutexAutoLock envlock(m_env_mutex); //bulk comment-out @@ -1959,6 +1981,8 @@ void Client::selectPlayerItem(u16 item) assert(player != NULL); player->wieldItem(item); + + sendPlayerItem(item); } // Returns true if the inventory of the local player has been -- cgit v1.2.3