CommandSender: export getLanguage()

this currently serves as a proxy to the server main language, but it can be used by third party implementations to choose a non-Server language.
This commit is contained in:
Dylan K. Taylor 2020-06-22 20:05:23 +01:00
parent 097fc7e6cb
commit 52fd1a8c1d
10 changed files with 33 additions and 20 deletions

View File

@ -1290,7 +1290,7 @@ class Server{
return true;
}
$sender->sendMessage($this->getLanguage()->translateString(TextFormat::RED . "%commands.generic.notFound"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.notFound"));
return false;
}

View File

@ -108,7 +108,7 @@ abstract class Command{
}
if($this->permissionMessage === null){
$target->sendMessage($target->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$target->sendMessage($target->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
}elseif($this->permissionMessage !== ""){
$target->sendMessage(str_replace("<permission>", $this->permission, $this->permissionMessage));
}
@ -229,7 +229,7 @@ abstract class Command{
public static function broadcastCommandMessage(CommandSender $source, $message, bool $sendToSource = true) : void{
$users = PermissionManager::getInstance()->getPermissionSubscriptions(Server::BROADCAST_CHANNEL_ADMINISTRATIVE);
if($message instanceof TranslationContainer){
$formatted = "[" . $source->getName() . ": " . ($source->getServer()->getLanguage()->get($message->getText()) !== $message->getText() ? "%" : "") . $message->getText() . "]";
$formatted = "[" . $source->getName() . ": " . ($source->getLanguage()->get($message->getText()) !== $message->getText() ? "%" : "") . $message->getText() . "]";
$result = new TranslationContainer($formatted, $message->getParameters());
$colored = new TranslationContainer(TextFormat::GRAY . TextFormat::ITALIC . $formatted, $message->getParameters());

View File

@ -23,12 +23,15 @@ declare(strict_types=1);
namespace pocketmine\command;
use pocketmine\lang\Language;
use pocketmine\lang\TranslationContainer;
use pocketmine\permission\Permissible;
use pocketmine\Server;
interface CommandSender extends Permissible{
public function getLanguage() : Language;
/**
* @param TranslationContainer|string $message
*/

View File

@ -23,6 +23,7 @@ declare(strict_types=1);
namespace pocketmine\command;
use pocketmine\lang\Language;
use pocketmine\lang\TranslationContainer;
use pocketmine\permission\PermissibleBase;
use pocketmine\permission\PermissibleDelegateTrait;
@ -48,15 +49,19 @@ class ConsoleCommandSender implements CommandSender{
return $this->server;
}
public function getLanguage() : Language{
return $this->server->getLanguage();
}
/**
* @param TranslationContainer|string $message
*/
public function sendMessage($message) : void{
$server = $this->getServer();
if($message instanceof TranslationContainer){
$message = $server->getLanguage()->translate($message);
$message = $this->getLanguage()->translate($message);
}else{
$message = $server->getLanguage()->translateString($message);
$message = $this->getLanguage()->translateString($message);
}
foreach(explode("\n", trim($message)) as $line){

View File

@ -243,7 +243,7 @@ class SimpleCommandMap implements CommandMap{
try{
$target->execute($sender, $sentCommandLabel, $args);
}catch(InvalidCommandSyntaxException $e){
$sender->sendMessage($this->server->getLanguage()->translateString("commands.generic.usage", [$target->getUsage()]));
$sender->sendMessage($sender->getLanguage()->translateString("commands.generic.usage", [$target->getUsage()]));
}finally{
$target->timings->stopTiming();
}

View File

@ -55,7 +55,7 @@ class KillCommand extends VanillaCommand{
if(count($args) === 1){
if(!$sender->hasPermission("pocketmine.command.kill.other")){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}
@ -74,7 +74,7 @@ class KillCommand extends VanillaCommand{
if($sender instanceof Player){
if(!$sender->hasPermission("pocketmine.command.kill.self")){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}

View File

@ -50,7 +50,7 @@ class TimeCommand extends VanillaCommand{
if($args[0] === "start"){
if(!$sender->hasPermission("pocketmine.command.time.start")){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}
@ -61,7 +61,7 @@ class TimeCommand extends VanillaCommand{
return true;
}elseif($args[0] === "stop"){
if(!$sender->hasPermission("pocketmine.command.time.stop")){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}
@ -72,7 +72,7 @@ class TimeCommand extends VanillaCommand{
return true;
}elseif($args[0] === "query"){
if(!$sender->hasPermission("pocketmine.command.time.query")){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}
@ -81,7 +81,7 @@ class TimeCommand extends VanillaCommand{
}else{
$world = $sender->getServer()->getWorldManager()->getDefaultWorld();
}
$sender->sendMessage($sender->getServer()->getLanguage()->translateString("commands.time.query", [$world->getTime()]));
$sender->sendMessage($sender->getLanguage()->translateString("commands.time.query", [$world->getTime()]));
return true;
}
@ -91,7 +91,7 @@ class TimeCommand extends VanillaCommand{
if($args[0] === "set"){
if(!$sender->hasPermission("pocketmine.command.time.set")){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}
@ -126,7 +126,7 @@ class TimeCommand extends VanillaCommand{
Command::broadcastCommandMessage($sender, new TranslationContainer("commands.time.set", [$value]));
}elseif($args[0] === "add"){
if(!$sender->hasPermission("pocketmine.command.time.add")){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}

View File

@ -117,7 +117,7 @@ class WhitelistCommand extends VanillaCommand{
"off" => "disable"
];
if(!$sender->hasPermission("pocketmine.command.whitelist." . ($map[$subcommand] ?? $subcommand))){
$sender->sendMessage($sender->getServer()->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%commands.generic.permission"));
return true;
}

View File

@ -768,7 +768,7 @@ class NetworkSession{
$data = new CommandData(
$lname, //TODO: commands containing uppercase letters in the name crash 1.9.0 client
$this->server->getLanguage()->translateString($command->getDescription()),
$this->player->getLanguage()->translateString($command->getDescription()),
0,
0,
$aliasObj,

View File

@ -78,6 +78,7 @@ use pocketmine\item\enchantment\EnchantmentInstance;
use pocketmine\item\enchantment\MeleeWeaponEnchantment;
use pocketmine\item\Item;
use pocketmine\item\ItemUseResult;
use pocketmine\lang\Language;
use pocketmine\lang\TranslationContainer;
use pocketmine\math\Vector3;
use pocketmine\nbt\tag\CompoundTag;
@ -634,6 +635,10 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener,
return $this->locale;
}
public function getLanguage() : Language{
return $this->server->getLanguage();
}
/**
* Called when a player changes their skin.
* Plugin developers should not use this, use setSkin() and sendSkin() instead.
@ -1859,7 +1864,7 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener,
return;
}
$this->networkSession->onRawChatMessage($this->server->getLanguage()->translateString($message));
$this->networkSession->onRawChatMessage($this->getLanguage()->translateString($message));
}
/**
@ -1868,11 +1873,11 @@ class Player extends Human implements CommandSender, ChunkLoader, ChunkListener,
public function sendTranslation(string $message, array $parameters = []) : void{
if(!$this->server->isLanguageForced()){
foreach($parameters as $i => $p){
$parameters[$i] = $this->server->getLanguage()->translateString($p, [], "pocketmine.");
$parameters[$i] = $this->getLanguage()->translateString($p, [], "pocketmine.");
}
$this->networkSession->onTranslatedChatMessage($this->server->getLanguage()->translateString($message, $parameters, "pocketmine."), $parameters);
$this->networkSession->onTranslatedChatMessage($this->getLanguage()->translateString($message, $parameters, "pocketmine."), $parameters);
}else{
$this->sendMessage($this->server->getLanguage()->translateString($message, $parameters));
$this->sendMessage($this->getLanguage()->translateString($message, $parameters));
}
}