diff --git a/src/Player.php b/src/Player.php index c94cacb99..0e6308c2d 100644 --- a/src/Player.php +++ b/src/Player.php @@ -494,8 +494,26 @@ class Player{ public function sendChat($message){ $mes = explode("\n", $message); foreach($mes as $m){ + if(preg_match_all('#@([@A-Za-z_]{1,})#', $m, $matches, PREG_OFFSET_CAPTURE) > 0){ + $offsetshift = 0; + foreach($matches[1] as $selector){ + if($selector[0]{0} === "@"){ //Escape! + $m = substr_replace($m, $selector[0], $selector[1] + $offsetshift - 1, strlen($selector[0]) + 1); + --$offsetshift; + continue; + } + switch(strtolower($selector[0])){ + case "player": + case "username": + $m = substr_replace($m, $this->username, $selector[1] + $offsetshift - 1, strlen($selector[0]) + 1); + $offsetshift += strlen($selector[0]) - strlen($this->username) + 1; + break; + } + } + } $this->dataPacket(MC_CHAT, array( - "message" => str_replace("@username", $this->username, $m), + + "message" => $m, )); } }