diff --git a/src/Server.php b/src/Server.php index 07fdfa70a..f5aebbbb9 100644 --- a/src/Server.php +++ b/src/Server.php @@ -44,7 +44,6 @@ use pocketmine\event\server\CommandEvent; use pocketmine\event\server\DataPacketSendEvent; use pocketmine\event\server\QueryRegenerateEvent; use pocketmine\lang\KnownTranslationFactory; -use pocketmine\lang\KnownTranslationKeys; use pocketmine\lang\Language; use pocketmine\lang\LanguageNotFoundException; use pocketmine\lang\TranslationContainer; @@ -1292,7 +1291,7 @@ class Server{ return true; } - $sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_notFound()->prefix(TextFormat::RED)); return false; } diff --git a/src/block/Bed.php b/src/block/Bed.php index c03ae71dd..dd63c4a0d 100644 --- a/src/block/Bed.php +++ b/src/block/Bed.php @@ -30,8 +30,7 @@ use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\HorizontalFacingTrait; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\item\Item; -use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; +use pocketmine\lang\KnownTranslationFactory; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; @@ -135,7 +134,7 @@ class Bed extends Transparent{ return true; }elseif($playerPos->distanceSquared($this->pos) > 4 and $playerPos->distanceSquared($other->pos) > 4){ - $player->sendMessage(new TranslationContainer(TextFormat::GRAY . "%" . KnownTranslationKeys::TILE_BED_TOOFAR)); + $player->sendMessage(KnownTranslationFactory::tile_bed_tooFar()->prefix(TextFormat::GRAY)); return true; } @@ -144,7 +143,7 @@ class Bed extends Transparent{ $isNight = ($time >= World::TIME_NIGHT and $time < World::TIME_SUNRISE); if(!$isNight){ - $player->sendMessage(new TranslationContainer(TextFormat::GRAY . "%" . KnownTranslationKeys::TILE_BED_NOSLEEP)); + $player->sendMessage(KnownTranslationFactory::tile_bed_tooFar()->prefix(TextFormat::GRAY)); return true; } @@ -152,7 +151,7 @@ class Bed extends Transparent{ $b = ($this->isHeadPart() ? $this : $other); if($b->isOccupied()){ - $player->sendMessage(new TranslationContainer(TextFormat::GRAY . "%" . KnownTranslationKeys::TILE_BED_OCCUPIED)); + $player->sendMessage(KnownTranslationFactory::tile_bed_occupied()->prefix(TextFormat::GRAY)); return true; } diff --git a/src/command/Command.php b/src/command/Command.php index 7972638af..d723992ca 100644 --- a/src/command/Command.php +++ b/src/command/Command.php @@ -29,7 +29,6 @@ namespace pocketmine\command; use pocketmine\command\utils\CommandException; use pocketmine\console\ConsoleCommandSender; use pocketmine\lang\KnownTranslationFactory; -use pocketmine\lang\KnownTranslationKeys; use pocketmine\lang\TranslationContainer; use pocketmine\permission\PermissionManager; use pocketmine\Server; @@ -118,7 +117,7 @@ abstract class Command{ } if($this->permissionMessage === null){ - $target->sendMessage($target->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION)); + $target->sendMessage(KnownTranslationFactory::commands_generic_permission()->prefix(TextFormat::RED)); }elseif($this->permissionMessage !== ""){ $target->sendMessage(str_replace("", $permission ?? $this->permission, $this->permissionMessage)); } @@ -234,14 +233,11 @@ abstract class Command{ public static function broadcastCommandMessage(CommandSender $source, TranslationContainer|string $message, bool $sendToSource = true) : void{ $users = $source->getServer()->getBroadcastChannelSubscribers(Server::BROADCAST_CHANNEL_ADMINISTRATIVE); if($message instanceof TranslationContainer){ - $formatted = "[" . $source->getName() . ": %" . $message->getText() . "]"; - - $result = new TranslationContainer($formatted, $message->getParameters()); - $colored = new TranslationContainer(TextFormat::GRAY . TextFormat::ITALIC . $formatted, $message->getParameters()); + $result = $message->format("[" . $source->getName() . ": ", "]"); }else{ $result = KnownTranslationFactory::chat_type_admin($source->getName(), $message); - $colored = new TranslationContainer(TextFormat::GRAY . TextFormat::ITALIC . "%" . KnownTranslationKeys::CHAT_TYPE_ADMIN, [$source->getName(), $message]); } + $colored = $result->prefix(TextFormat::GRAY . TextFormat::ITALIC); if($sendToSource and !($source instanceof ConsoleCommandSender)){ $source->sendMessage($message); diff --git a/src/command/defaults/ClearCommand.php b/src/command/defaults/ClearCommand.php index 6951ef2cf..08f160caa 100644 --- a/src/command/defaults/ClearCommand.php +++ b/src/command/defaults/ClearCommand.php @@ -30,7 +30,6 @@ use pocketmine\item\LegacyStringToItemParser; use pocketmine\item\LegacyStringToItemParserException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; use pocketmine\utils\TextFormat; @@ -62,7 +61,7 @@ class ClearCommand extends VanillaCommand{ if(isset($args[0])){ $target = $sender->getServer()->getPlayerByPrefix($args[0]); if($target === null){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } if($target !== $sender && !$this->testPermission($sender, DefaultPermissionNames::COMMAND_CLEAR_OTHER)){ @@ -89,7 +88,7 @@ class ClearCommand extends VanillaCommand{ } }catch(LegacyStringToItemParserException $e){ //vanilla checks this at argument parsing layer, can't come up with a better alternative - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GIVE_ITEM_NOTFOUND, [$args[1]])); + $sender->sendMessage(KnownTranslationFactory::commands_give_item_notFound($args[1])->prefix(TextFormat::RED)); return true; } } @@ -105,7 +104,7 @@ class ClearCommand extends VanillaCommand{ if($count > 0){ $sender->sendMessage(KnownTranslationFactory::commands_clear_testing($target->getName(), (string) $count)); }else{ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_CLEAR_FAILURE_NO_ITEMS, [$target->getName()])); + $sender->sendMessage(KnownTranslationFactory::commands_clear_failure_no_items($target->getName())->prefix(TextFormat::RED)); } return true; @@ -167,7 +166,7 @@ class ClearCommand extends VanillaCommand{ if($cleared > 0){ Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_clear_success($target->getName(), (string) $cleared)); }else{ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_CLEAR_FAILURE_NO_ITEMS, [$target->getName()])); + $sender->sendMessage(KnownTranslationFactory::commands_clear_failure_no_items($target->getName())->prefix(TextFormat::RED)); } return true; diff --git a/src/command/defaults/EffectCommand.php b/src/command/defaults/EffectCommand.php index 0e6df678d..592301003 100644 --- a/src/command/defaults/EffectCommand.php +++ b/src/command/defaults/EffectCommand.php @@ -29,7 +29,6 @@ use pocketmine\entity\effect\EffectInstance; use pocketmine\entity\effect\VanillaEffects; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\utils\Limits; use pocketmine\utils\TextFormat; @@ -59,7 +58,7 @@ class EffectCommand extends VanillaCommand{ $player = $sender->getServer()->getPlayerByPrefix($args[0]); if($player === null){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } $effectManager = $player->getEffects(); @@ -74,7 +73,7 @@ class EffectCommand extends VanillaCommand{ try{ $effect = VanillaEffects::fromString($args[1]); }catch(\InvalidArgumentException $e){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_EFFECT_NOTFOUND, [$args[1]])); + $sender->sendMessage(KnownTranslationFactory::commands_effect_notFound($args[1])->prefix(TextFormat::RED)); return true; } diff --git a/src/command/defaults/EnchantCommand.php b/src/command/defaults/EnchantCommand.php index d34e6a884..08135bca5 100644 --- a/src/command/defaults/EnchantCommand.php +++ b/src/command/defaults/EnchantCommand.php @@ -57,7 +57,7 @@ class EnchantCommand extends VanillaCommand{ $player = $sender->getServer()->getPlayerByPrefix($args[0]); if($player === null){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } diff --git a/src/command/defaults/GamemodeCommand.php b/src/command/defaults/GamemodeCommand.php index 41fc5262f..be26935ec 100644 --- a/src/command/defaults/GamemodeCommand.php +++ b/src/command/defaults/GamemodeCommand.php @@ -64,7 +64,7 @@ class GamemodeCommand extends VanillaCommand{ if(isset($args[1])){ $target = $sender->getServer()->getPlayerByPrefix($args[1]); if($target === null){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } diff --git a/src/command/defaults/GiveCommand.php b/src/command/defaults/GiveCommand.php index 63cb32860..975d63d88 100644 --- a/src/command/defaults/GiveCommand.php +++ b/src/command/defaults/GiveCommand.php @@ -30,7 +30,6 @@ use pocketmine\item\LegacyStringToItemParser; use pocketmine\item\LegacyStringToItemParserException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\nbt\JsonNbtParser; use pocketmine\nbt\NbtDataException; use pocketmine\permission\DefaultPermissionNames; @@ -61,14 +60,14 @@ class GiveCommand extends VanillaCommand{ $player = $sender->getServer()->getPlayerByPrefix($args[0]); if($player === null){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } try{ $item = LegacyStringToItemParser::getInstance()->parse($args[1]); }catch(LegacyStringToItemParserException $e){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GIVE_ITEM_NOTFOUND, [$args[1]])); + $sender->sendMessage(KnownTranslationFactory::commands_give_item_notFound($args[1])->prefix(TextFormat::RED)); return true; } diff --git a/src/command/defaults/KickCommand.php b/src/command/defaults/KickCommand.php index 3fbd00a0e..d654be2da 100644 --- a/src/command/defaults/KickCommand.php +++ b/src/command/defaults/KickCommand.php @@ -28,7 +28,6 @@ use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; use pocketmine\utils\TextFormat; @@ -68,7 +67,7 @@ class KickCommand extends VanillaCommand{ Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_kick_success($player->getName())); } }else{ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); } return true; diff --git a/src/command/defaults/KillCommand.php b/src/command/defaults/KillCommand.php index f8655738a..2e1bb0b9f 100644 --- a/src/command/defaults/KillCommand.php +++ b/src/command/defaults/KillCommand.php @@ -29,7 +29,6 @@ use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\event\entity\EntityDamageEvent; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; use pocketmine\utils\TextFormat; @@ -68,7 +67,7 @@ class KillCommand extends VanillaCommand{ $player->attack(new EntityDamageEvent($player, EntityDamageEvent::CAUSE_SUICIDE, 1000)); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_kill_successful($player->getName())); }else{ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); } return true; diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index a7ee0d8c4..7bb6e098b 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -31,7 +31,6 @@ use pocketmine\item\ItemFactory; use pocketmine\item\VanillaItems; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\math\Vector3; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; @@ -121,7 +120,7 @@ class ParticleCommand extends VanillaCommand{ $particle = $this->getParticle($name, $data); if($particle === null){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_PARTICLE_NOTFOUND, [$name])); + $sender->sendMessage(KnownTranslationFactory::commands_particle_notFound($name)->prefix(TextFormat::RED)); return true; } diff --git a/src/command/defaults/SayCommand.php b/src/command/defaults/SayCommand.php index d337b6bc8..62d9fd214 100644 --- a/src/command/defaults/SayCommand.php +++ b/src/command/defaults/SayCommand.php @@ -26,8 +26,8 @@ namespace pocketmine\command\defaults; use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\console\ConsoleCommandSender; +use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; use pocketmine\utils\TextFormat; @@ -54,7 +54,10 @@ class SayCommand extends VanillaCommand{ throw new InvalidCommandSyntaxException(); } - $sender->getServer()->broadcastMessage(new TranslationContainer(TextFormat::LIGHT_PURPLE . "%" . KnownTranslationKeys::CHAT_TYPE_ANNOUNCEMENT, [$sender instanceof Player ? $sender->getDisplayName() : ($sender instanceof ConsoleCommandSender ? "Server" : $sender->getName()), TextFormat::LIGHT_PURPLE . implode(" ", $args)])); + $sender->getServer()->broadcastMessage(KnownTranslationFactory::chat_type_announcement( + $sender instanceof Player ? $sender->getDisplayName() : ($sender instanceof ConsoleCommandSender ? "Server" : $sender->getName()), + implode(" ", $args) + )->prefix(TextFormat::LIGHT_PURPLE)); return true; } } diff --git a/src/command/defaults/SpawnpointCommand.php b/src/command/defaults/SpawnpointCommand.php index 23cf0b82e..031c64ae4 100644 --- a/src/command/defaults/SpawnpointCommand.php +++ b/src/command/defaults/SpawnpointCommand.php @@ -28,7 +28,6 @@ use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; use pocketmine\utils\TextFormat; @@ -66,7 +65,7 @@ class SpawnpointCommand extends VanillaCommand{ }else{ $target = $sender->getServer()->getPlayerByPrefix($args[0]); if($target === null){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND)); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } diff --git a/src/command/defaults/TellCommand.php b/src/command/defaults/TellCommand.php index 9b9ba5f8d..693fae68b 100644 --- a/src/command/defaults/TellCommand.php +++ b/src/command/defaults/TellCommand.php @@ -28,7 +28,6 @@ use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; -use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; use pocketmine\utils\TextFormat; @@ -60,15 +59,15 @@ class TellCommand extends VanillaCommand{ $player = $sender->getServer()->getPlayerByPrefix(array_shift($args)); if($player === $sender){ - $sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_MESSAGE_SAMETARGET)); + $sender->sendMessage(KnownTranslationFactory::commands_message_sameTarget()->prefix(TextFormat::RED)); return true; } if($player instanceof Player){ $message = implode(" ", $args); - $sender->sendMessage(new TranslationContainer(TextFormat::GRAY . TextFormat::ITALIC . "%" . KnownTranslationKeys::COMMANDS_MESSAGE_DISPLAY_OUTGOING, [$player->getDisplayName(), $message])); + $sender->sendMessage(KnownTranslationFactory::commands_message_display_outgoing($player->getDisplayName(), $message)->prefix(TextFormat::GRAY . TextFormat::ITALIC)); $name = $sender instanceof Player ? $sender->getDisplayName() : $sender->getName(); - $player->sendMessage(new TranslationContainer(TextFormat::GRAY . TextFormat::ITALIC . "%" . KnownTranslationKeys::COMMANDS_MESSAGE_DISPLAY_INCOMING, [$name, $message])); + $player->sendMessage(KnownTranslationFactory::commands_message_display_incoming($name, $message)->prefix(TextFormat::GRAY . TextFormat::ITALIC)); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_message_display_outgoing($player->getDisplayName(), $message), false); }else{ $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()); diff --git a/src/command/defaults/TitleCommand.php b/src/command/defaults/TitleCommand.php index 62b80e422..6a96293ae 100644 --- a/src/command/defaults/TitleCommand.php +++ b/src/command/defaults/TitleCommand.php @@ -28,6 +28,7 @@ use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\lang\KnownTranslationKeys; use pocketmine\permission\DefaultPermissionNames; +use pocketmine\utils\TextFormat; use function array_slice; use function count; use function implode; @@ -54,7 +55,7 @@ class TitleCommand extends VanillaCommand{ $player = $sender->getServer()->getPlayerByPrefix($args[0]); if($player === null){ - $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()); + $sender->sendMessage(KnownTranslationFactory::commands_generic_player_notFound()->prefix(TextFormat::RED)); return true; } diff --git a/src/lang/TranslationContainer.php b/src/lang/TranslationContainer.php index bcafb38c0..4780535b4 100644 --- a/src/lang/TranslationContainer.php +++ b/src/lang/TranslationContainer.php @@ -55,4 +55,16 @@ final class TranslationContainer{ public function getParameter(int|string $i) : ?string{ return $this->params[$i] ?? null; } + + public function format(string $before, string $after) : self{ + return new self("$before%$this->text$after", $this->params); + } + + public function prefix(string $prefix) : self{ + return new self("$prefix%$this->text", $this->params); + } + + public function postfix(string $postfix) : self{ + return new self("%$this->text" . $postfix); + } } diff --git a/src/player/Player.php b/src/player/Player.php index e4bc20180..be5fec6c3 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -81,7 +81,6 @@ use pocketmine\item\Item; use pocketmine\item\ItemUseResult; use pocketmine\item\Releasable; use pocketmine\lang\KnownTranslationFactory; -use pocketmine\lang\KnownTranslationKeys; use pocketmine\lang\Language; use pocketmine\lang\TranslationContainer; use pocketmine\math\Vector3; @@ -321,9 +320,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ public function getLeaveMessage() : TranslationContainer|string{ if($this->spawned){ - return new TranslationContainer(TextFormat::YELLOW . "%" . KnownTranslationKeys::MULTIPLAYER_PLAYER_LEFT, [ - $this->getDisplayName() - ]); + return KnownTranslationFactory::multiplayer_player_left($this->getDisplayName())->prefix(TextFormat::YELLOW); } return ""; @@ -757,9 +754,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ }); $ev = new PlayerJoinEvent($this, - new TranslationContainer(TextFormat::YELLOW . "%" . KnownTranslationKeys::MULTIPLAYER_PLAYER_JOINED, [ - $this->getDisplayName() - ]) + KnownTranslationFactory::multiplayer_player_joined($this->getDisplayName())->prefix(TextFormat::YELLOW) ); $ev->call(); if($ev->getJoinMessage() !== ""){