summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattes D <github@xoft.cz>2015-05-29 10:57:31 +0200
committerMattes D <github@xoft.cz>2015-05-29 10:57:31 +0200
commit6adf5f5e008cd143b05240cd9886cb98e61e77f4 (patch)
tree64f918963af98da2edac09da1c420bea1773ce8d
parentFixed Info.lua documentation (diff)
parentMerge branch 'Issue2106' of https://github.com/beeduck/MCServer into Issue2106 (diff)
downloadcuberite-6adf5f5e008cd143b05240cd9886cb98e61e77f4.tar
cuberite-6adf5f5e008cd143b05240cd9886cb98e61e77f4.tar.gz
cuberite-6adf5f5e008cd143b05240cd9886cb98e61e77f4.tar.bz2
cuberite-6adf5f5e008cd143b05240cd9886cb98e61e77f4.tar.lz
cuberite-6adf5f5e008cd143b05240cd9886cb98e61e77f4.tar.xz
cuberite-6adf5f5e008cd143b05240cd9886cb98e61e77f4.tar.zst
cuberite-6adf5f5e008cd143b05240cd9886cb98e61e77f4.zip
-rw-r--r--src/ClientHandle.cpp6
-rw-r--r--src/Root.cpp19
-rw-r--r--src/Root.h6
3 files changed, 26 insertions, 5 deletions
diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp
index 9644679d7..9cba5619d 100644
--- a/src/ClientHandle.cpp
+++ b/src/ClientHandle.cpp
@@ -381,8 +381,8 @@ void cClientHandle::Authenticate(const AString & a_Name, const AString & a_UUID,
// Send player list items
SendPlayerListAddPlayer(*m_Player);
- World->BroadcastPlayerListAddPlayer(*m_Player);
- World->SendPlayerList(m_Player);
+ cRoot::Get()->BroadcastPlayerListsAddPlayer(*m_Player);
+ cRoot::Get()->SendPlayerLists(m_Player);
m_Player->Initialize(*World);
m_State = csAuthenticated;
@@ -1475,7 +1475,7 @@ void cClientHandle::HandleChat(const AString & a_Message)
Msg.AddTextPart(AString("<") + m_Player->GetName() + "> ", Color);
Msg.ParseText(Message);
Msg.UnderlineUrls();
- m_Player->GetWorld()->BroadcastChat(Msg);
+ cRoot::Get()->BroadcastChat(Msg);
}
diff --git a/src/Root.cpp b/src/Root.cpp
index b28e7c894..54e65b6da 100644
--- a/src/Root.cpp
+++ b/src/Root.cpp
@@ -558,6 +558,23 @@ void cRoot::SaveAllChunks(void)
+void cRoot::SendPlayerLists(cPlayer * a_DestPlayer)
+{
+ for (const auto & itr : m_WorldsByName)
+ {
+ itr.second->SendPlayerList(a_DestPlayer);
+ } // for itr - m_WorldsByName[]
+}
+
+
+
+void cRoot::BroadcastPlayerListsAddPlayer(const cPlayer & a_Player, const cClientHandle * a_Exclude)
+{
+ for (const auto & itr : m_WorldsByName)
+ {
+ itr.second->BroadcastPlayerListAddPlayer(a_Player);
+ } // for itr - m_WorldsByName[]
+}
void cRoot::BroadcastChat(const AString & a_Message, eMessageType a_ChatPrefix)
@@ -582,8 +599,6 @@ void cRoot::BroadcastChat(const cCompositeChat & a_Message)
-
-
bool cRoot::ForEachPlayer(cPlayerListCallback & a_Callback)
{
for (WorldMap::iterator itr = m_WorldsByName.begin(), itr2 = itr; itr != m_WorldsByName.end(); itr = itr2)
diff --git a/src/Root.h b/src/Root.h
index ab820427f..81551a503 100644
--- a/src/Root.h
+++ b/src/Root.h
@@ -145,6 +145,12 @@ public:
/** Finds the player using it's complete username and calls the callback */
bool DoWithPlayer(const AString & a_PlayerName, cPlayerListCallback & a_Callback);
+ /** Send playerlist of all worlds to player */
+ void SendPlayerLists(cPlayer * a_DestPlayer);
+
+ /** Broadcast Player through all worlds */
+ void BroadcastPlayerListsAddPlayer(const cPlayer & a_Player, const cClientHandle * a_Exclude = nullptr);
+
// tolua_begin
/// Sends a chat message to all connected clients (in all worlds)