From 5ad4f44dce61d0c71657ca015f2195d117665799 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sat, 23 May 2015 12:03:47 +0200 Subject: [PATCH] Fixes sending newlines on messages to impersonate chat messages --- src/pocketmine/Player.php | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 82fb4a1b3..c066b9bf5 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2357,20 +2357,21 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade $this->craftingType = 0; if($packet->type === TextPacket::TYPE_CHAT){ $packet->message = TextFormat::clean($packet->message, $this->removeFormat); - if(trim($packet->message) != "" and strlen($packet->message) <= 255){ - $message = $packet->message; - $this->server->getPluginManager()->callEvent($ev = new PlayerCommandPreprocessEvent($this, $message)); - if($ev->isCancelled()){ - break; - } - if(substr($ev->getMessage(), 0, 1) === "/"){ //Command - Timings::$playerCommandTimer->startTiming(); - $this->server->dispatchCommand($ev->getPlayer(), substr($ev->getMessage(), 1)); - Timings::$playerCommandTimer->stopTiming(); - }else{ - $this->server->getPluginManager()->callEvent($ev = new PlayerChatEvent($this, $ev->getMessage())); - if(!$ev->isCancelled()){ - $this->server->broadcastMessage($this->getServer()->getLanguage()->translateString($ev->getFormat(), [$ev->getPlayer()->getDisplayName(), $ev->getMessage()]), $ev->getRecipients()); + foreach(explode("\n", $packet->message) as $message){ + if(trim($message) != "" and strlen($message) <= 255){ + $this->server->getPluginManager()->callEvent($ev = new PlayerCommandPreprocessEvent($this, $message)); + if($ev->isCancelled()){ + break; + } + if(substr($ev->getMessage(), 0, 1) === "/"){ //Command + Timings::$playerCommandTimer->startTiming(); + $this->server->dispatchCommand($ev->getPlayer(), substr($ev->getMessage(), 1)); + Timings::$playerCommandTimer->stopTiming(); + }else{ + $this->server->getPluginManager()->callEvent($ev = new PlayerChatEvent($this, $ev->getMessage())); + if(!$ev->isCancelled()){ + $this->server->broadcastMessage($this->getServer()->getLanguage()->translateString($ev->getFormat(), [$ev->getPlayer()->getDisplayName(), $ev->getMessage()]), $ev->getRecipients()); + } } } }