mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-23 03:16:35 +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{
|
||||
$this->server->getPluginManager()->callEvent($ev = new PlayerChatEvent($this, $ev->getMessage()));
|
||||
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 "survival":
|
||||
case "s":
|
||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.survival")):
|
||||
return Player::SURVIVAL;
|
||||
|
||||
case (string) Player::CREATIVE:
|
||||
case "creative":
|
||||
case "c":
|
||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.creative")):
|
||||
return Player::CREATIVE;
|
||||
|
||||
case (string) Player::ADVENTURE:
|
||||
case "adventure":
|
||||
case "a":
|
||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.adventure")):
|
||||
return Player::ADVENTURE;
|
||||
|
||||
case (string) Player::SPECTATOR:
|
||||
case "spectator":
|
||||
case "view":
|
||||
case "v":
|
||||
case strtolower(Server::getInstance()->getLanguage()->get("gameMode.spectator")):
|
||||
return Player::SPECTATOR;
|
||||
}
|
||||
return -1;
|
||||
|
@ -289,23 +289,21 @@ abstract class Command{
|
||||
public static function broadcastCommandMessage(CommandSender $source, $message, $sendToSource = true){
|
||||
if($message instanceof TextContainer){
|
||||
$m = clone $message;
|
||||
$result = $source->getName() . ": " . $m->getText();
|
||||
$result = "[".$source->getName().": ".$m->getText()."]";
|
||||
|
||||
$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);
|
||||
$result = clone $m;
|
||||
$m->setText($colored);
|
||||
$colored = clone $m;
|
||||
}else{
|
||||
$result = $source->getName() . ": " . $message;
|
||||
|
||||
//Command minecarts or command blocks are not implemented
|
||||
|
||||
$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)){
|
||||
$source->sendMessage($message);
|
||||
}
|
||||
|
@ -48,14 +48,7 @@ class MeCommand extends VanillaCommand{
|
||||
return false;
|
||||
}
|
||||
|
||||
$message = "* ";
|
||||
if($sender instanceof Player){
|
||||
$message .= $sender->getDisplayName();
|
||||
}else{
|
||||
$message .= $sender->getName();
|
||||
}
|
||||
|
||||
$sender->getServer()->broadcastMessage($message . " " . implode(" ", $args));
|
||||
$sender->getServer()->broadcastMessage(new TranslationContainer("chat.type.emote", [$sender instanceof Player ? $sender->getDisplayName() : $sender->getName(), TextFormat::WHITE . implode(" ", $args)]));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -49,17 +49,7 @@ class SayCommand extends VanillaCommand{
|
||||
return false;
|
||||
}
|
||||
|
||||
$message = TextFormat::LIGHT_PURPLE . "[";
|
||||
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);
|
||||
|
||||
$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)]));
|
||||
return true;
|
||||
}
|
||||
}
|
@ -42,10 +42,19 @@ class PlayerChatEvent extends PlayerEvent implements Cancellable{
|
||||
*/
|
||||
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->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;
|
||||
|
||||
if($recipients === null){
|
||||
$this->recipients = Server::getInstance()->getPluginManager()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_USERS);
|
||||
}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){
|
||||
if($c instanceof TranslationContainer){
|
||||
$baseText = $this->get($c->getText());
|
||||
|
@ -8,6 +8,13 @@ language.name=English
|
||||
multiplayer.player.joined={%0} joined 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.attack.inFire={%0} went up in flames
|
||||
death.attack.onFire={%0} burned to death
|
||||
|
Loading…
x
Reference in New Issue
Block a user