diff --git a/src/Server.php b/src/Server.php index 02c3da597..89b06da5c 100644 --- a/src/Server.php +++ b/src/Server.php @@ -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; } diff --git a/src/command/Command.php b/src/command/Command.php index 4e8f93eca..86c43e4bb 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -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("", $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()); diff --git a/src/command/CommandSender.php b/src/command/CommandSender.php index 9d2f38cf7..3c19565fe 100644 --- a/src/command/CommandSender.php +++ b/src/command/CommandSender.php @@ -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 */ diff --git a/src/command/ConsoleCommandSender.php b/src/command/ConsoleCommandSender.php index f4dbf2264..df7977716 100644 --- a/src/command/ConsoleCommandSender.php +++ b/src/command/ConsoleCommandSender.php @@ -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){ diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 2ee001b1a..2f850b146 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -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(); } diff --git a/src/command/defaults/KillCommand.php b/src/command/defaults/KillCommand.php index ee5ed3ecf..16a6e8e42 100644 --- a/src/command/defaults/KillCommand.php +++ b/src/command/defaults/KillCommand.php @@ -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; } diff --git a/src/command/defaults/TimeCommand.php b/src/command/defaults/TimeCommand.php index 7fea17438..f98fdee5e 100644 --- a/src/command/defaults/TimeCommand.php +++ b/src/command/defaults/TimeCommand.php @@ -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; } diff --git a/src/command/defaults/WhitelistCommand.php b/src/command/defaults/WhitelistCommand.php index 622f69bde..aeea227f8 100644 --- a/src/command/defaults/WhitelistCommand.php +++ b/src/command/defaults/WhitelistCommand.php @@ -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; } diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 43f555bda..cd057666f 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -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, diff --git a/src/player/Player.php b/src/player/Player.php index a0a76d095..074aac255 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -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)); } }