From 7de0835ad9b62804be36703e951a03a59a6d3070 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Pueyo Date: Wed, 15 May 2013 16:35:26 +0200 Subject: [PATCH] Chat Selectors [@player] --- src/Player.php | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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, )); } }