mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-23 19:34:15 +00:00
Translate format text
This commit is contained in:
parent
0c041ebca3
commit
c29ae333a2
@ -2194,7 +2194,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
|
|||||||
}else{
|
}else{
|
||||||
$this->server->getPluginManager()->callEvent($ev = new PlayerChatEvent($this, $ev->getMessage()));
|
$this->server->getPluginManager()->callEvent($ev = new PlayerChatEvent($this, $ev->getMessage()));
|
||||||
if(!$ev->isCancelled()){
|
if(!$ev->isCancelled()){
|
||||||
$this->server->broadcastMessage(sprintf($ev->getFormat(), $ev->getPlayer()->getDisplayName(), $ev->getMessage()), $ev->getRecipients());
|
$this->server->broadcastMessage($this->getServer()->getLanguage()->translateString($ev->getFormat(), [$ev->getPlayer()->getDisplayName(), $ev->getMessage()]), $ev->getRecipients());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -407,26 +407,22 @@ class Server{
|
|||||||
case (string) Player::SURVIVAL:
|
case (string) Player::SURVIVAL:
|
||||||
case "survival":
|
case "survival":
|
||||||
case "s":
|
case "s":
|
||||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.survival")):
|
|
||||||
return Player::SURVIVAL;
|
return Player::SURVIVAL;
|
||||||
|
|
||||||
case (string) Player::CREATIVE:
|
case (string) Player::CREATIVE:
|
||||||
case "creative":
|
case "creative":
|
||||||
case "c":
|
case "c":
|
||||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.creative")):
|
|
||||||
return Player::CREATIVE;
|
return Player::CREATIVE;
|
||||||
|
|
||||||
case (string) Player::ADVENTURE:
|
case (string) Player::ADVENTURE:
|
||||||
case "adventure":
|
case "adventure":
|
||||||
case "a":
|
case "a":
|
||||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.adventure")):
|
|
||||||
return Player::ADVENTURE;
|
return Player::ADVENTURE;
|
||||||
|
|
||||||
case (string) Player::SPECTATOR:
|
case (string) Player::SPECTATOR:
|
||||||
case "spectator":
|
case "spectator":
|
||||||
case "view":
|
case "view":
|
||||||
case "v":
|
case "v":
|
||||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.spectator")):
|
|
||||||
return Player::SPECTATOR;
|
return Player::SPECTATOR;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -289,23 +289,21 @@ abstract class Command{
|
|||||||
public static function broadcastCommandMessage(CommandSender $source, $message, $sendToSource = true){
|
public static function broadcastCommandMessage(CommandSender $source, $message, $sendToSource = true){
|
||||||
if($message instanceof TextContainer){
|
if($message instanceof TextContainer){
|
||||||
$m = clone $message;
|
$m = clone $message;
|
||||||
$result = $source->getName() . ": " . $m->getText();
|
$result = "[".$source->getName().": ".$m->getText()."]";
|
||||||
|
|
||||||
$users = Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_ADMINISTRATIVE);
|
$users = Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_ADMINISTRATIVE);
|
||||||
$colored = TextFormat::GRAY . TextFormat::ITALIC . "[$result" . TextFormat::GRAY . TextFormat::ITALIC . "]";
|
$colored = TextFormat::GRAY . TextFormat::ITALIC . $result;
|
||||||
|
|
||||||
$m->setText($result);
|
$m->setText($result);
|
||||||
$result = clone $m;
|
$result = clone $m;
|
||||||
$m->setText($colored);
|
$m->setText($colored);
|
||||||
$colored = clone $m;
|
$colored = clone $m;
|
||||||
}else{
|
}else{
|
||||||
$result = $source->getName() . ": " . $message;
|
|
||||||
|
|
||||||
//Command minecarts or command blocks are not implemented
|
|
||||||
|
|
||||||
$users = Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_ADMINISTRATIVE);
|
$users = Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_ADMINISTRATIVE);
|
||||||
$colored = TextFormat::GRAY . TextFormat::ITALIC . "[$result" . TextFormat::GRAY . TextFormat::ITALIC . "]";
|
$result = new TranslationContainer("chat.type.admin", [$source->getName(), $message]);
|
||||||
|
$colored = new TranslationContainer(TextFormat::GRAY . TextFormat::ITALIC . "%chat.type.admin", [$source->getName(), $message]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($sendToSource === true and !($source instanceof ConsoleCommandSender)){
|
if($sendToSource === true and !($source instanceof ConsoleCommandSender)){
|
||||||
$source->sendMessage($message);
|
$source->sendMessage($message);
|
||||||
}
|
}
|
||||||
|
@ -48,14 +48,7 @@ class MeCommand extends VanillaCommand{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = "* ";
|
$sender->getServer()->broadcastMessage(new TranslationContainer("chat.type.emote", [$sender instanceof Player ? $sender->getDisplayName() : $sender->getName(), TextFormat::WHITE . implode(" ", $args)]));
|
||||||
if($sender instanceof Player){
|
|
||||||
$message .= $sender->getDisplayName();
|
|
||||||
}else{
|
|
||||||
$message .= $sender->getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
$sender->getServer()->broadcastMessage($message . " " . implode(" ", $args));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -49,17 +49,7 @@ class SayCommand extends VanillaCommand{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = TextFormat::LIGHT_PURPLE . "[";
|
$sender->getServer()->broadcastMessage(new TranslationContainer(TextFormat::LIGHT_PURPLE . "%chat.type.announcement", [$sender instanceof Player ? $sender->getDisplayName() : ($sender instanceof ConsoleCommandSender ? "Server" : $sender->getName()), TextFormat::LIGHT_PURPLE . implode(" ", $args)]));
|
||||||
if($sender instanceof ConsoleCommandSender){
|
|
||||||
$message .= "Server";
|
|
||||||
}elseif($sender instanceof Player){
|
|
||||||
$message .= $sender->getDisplayName();
|
|
||||||
}else{
|
|
||||||
$message .= $sender->getName();
|
|
||||||
}
|
|
||||||
$message .= TextFormat::LIGHT_PURPLE . "] " . implode(" ", $args);
|
|
||||||
$sender->getServer()->broadcastMessage($message);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -42,10 +42,19 @@ class PlayerChatEvent extends PlayerEvent implements Cancellable{
|
|||||||
*/
|
*/
|
||||||
protected $recipients = [];
|
protected $recipients = [];
|
||||||
|
|
||||||
public function __construct(Player $player, $message, $format = "<%s> %s", array $recipients = null){
|
public function __construct(Player $player, $message, $format = "chat.type.text", array $recipients = null){
|
||||||
$this->player = $player;
|
$this->player = $player;
|
||||||
$this->message = $message;
|
$this->message = $message;
|
||||||
|
|
||||||
|
//TODO: @deprecated (backwards-compativility)
|
||||||
|
$i = 0;
|
||||||
|
while(($pos = strpos($format, "%s")) !== false){
|
||||||
|
$format = substr($format, 0, $pos) . "{%$i}" . substr($format, $pos + 2);
|
||||||
|
++$i;
|
||||||
|
}
|
||||||
|
|
||||||
$this->format = $format;
|
$this->format = $format;
|
||||||
|
|
||||||
if($recipients === null){
|
if($recipients === null){
|
||||||
$this->recipients = Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_USERS);
|
$this->recipients = Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_USERS);
|
||||||
}else{
|
}else{
|
||||||
|
@ -78,6 +78,23 @@ class BaseLang{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $str
|
||||||
|
* @param string[] $params
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function translateString($str, array $params = []){
|
||||||
|
$baseText = $this->get($str);
|
||||||
|
$baseText = $this->parseTranslation( $baseText !== null ? $baseText : $str);
|
||||||
|
|
||||||
|
foreach($params as $i => $p){
|
||||||
|
$baseText = str_replace("{%$i}", $this->parseTranslation($p), $baseText);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $baseText;
|
||||||
|
}
|
||||||
|
|
||||||
public function translate(TextContainer $c){
|
public function translate(TextContainer $c){
|
||||||
if($c instanceof TranslationContainer){
|
if($c instanceof TranslationContainer){
|
||||||
$baseText = $this->get($c->getText());
|
$baseText = $this->get($c->getText());
|
||||||
|
@ -8,6 +8,13 @@ language.name=English
|
|||||||
multiplayer.player.joined={%0} joined the game
|
multiplayer.player.joined={%0} joined the game
|
||||||
multiplayer.player.leave={%0} left the game
|
multiplayer.player.leave={%0} left the game
|
||||||
|
|
||||||
|
chat.type.text=<{%0}> {%1}
|
||||||
|
chat.type.emote=* {%0} {%1}
|
||||||
|
chat.type.announcement=[{%0}] {%1}
|
||||||
|
chat.type.admin=[{%0}: {%1}]
|
||||||
|
chat.type.achievement={%0} has just earned the achievement {%1}
|
||||||
|
|
||||||
|
|
||||||
death.fell.accident.generic={%0} fell from a high place
|
death.fell.accident.generic={%0} fell from a high place
|
||||||
death.attack.inFire={%0} went up in flames
|
death.attack.inFire={%0} went up in flames
|
||||||
death.attack.onFire={%0} burned to death
|
death.attack.onFire={%0} burned to death
|
||||||
|
Loading…
x
Reference in New Issue
Block a user