mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-20 16:00:20 +00:00
Rename TranslationContainer -> Translatable
This commit is contained in:
parent
5bdcc0339f
commit
789a669395
@ -23,7 +23,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\build\generate_known_translation_apis;
|
||||
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use Webmozart\PathUtil\Path;
|
||||
use function array_map;
|
||||
use function count;
|
||||
@ -132,7 +132,7 @@ HEADER;
|
||||
|
||||
$parameterRegex = '/{%(.+?)}/';
|
||||
|
||||
$translationContainerClass = (new \ReflectionClass(TranslationContainer::class))->getShortName();
|
||||
$translationContainerClass = (new \ReflectionClass(Translatable::class))->getShortName();
|
||||
foreach($languageDefinitions as $key => $value){
|
||||
$parameters = [];
|
||||
if(preg_match_all($parameterRegex, $value, $matches) > 0){
|
||||
|
@ -46,7 +46,7 @@ use pocketmine\event\server\QueryRegenerateEvent;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\lang\Language;
|
||||
use pocketmine\lang\LanguageNotFoundException;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\nbt\BigEndianNbtSerializer;
|
||||
use pocketmine\nbt\NbtDataException;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
@ -1121,7 +1121,7 @@ class Server{
|
||||
/**
|
||||
* @param CommandSender[]|null $recipients
|
||||
*/
|
||||
public function broadcastMessage(TranslationContainer|string $message, ?array $recipients = null) : int{
|
||||
public function broadcastMessage(Translatable|string $message, ?array $recipients = null) : int{
|
||||
$recipients = $recipients ?? $this->getBroadcastChannelSubscribers(self::BROADCAST_CHANNEL_USERS);
|
||||
|
||||
foreach($recipients as $recipient){
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\command;
|
||||
use pocketmine\command\utils\CommandException;
|
||||
use pocketmine\console\ConsoleCommandSender;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\permission\PermissionManager;
|
||||
use pocketmine\Server;
|
||||
use pocketmine\timings\Timings;
|
||||
@ -230,7 +230,7 @@ abstract class Command{
|
||||
$this->usageMessage = $usage;
|
||||
}
|
||||
|
||||
public static function broadcastCommandMessage(CommandSender $source, TranslationContainer|string $message, bool $sendToSource = true) : void{
|
||||
public static function broadcastCommandMessage(CommandSender $source, Translatable|string $message, bool $sendToSource = true) : void{
|
||||
$users = $source->getServer()->getBroadcastChannelSubscribers(Server::BROADCAST_CHANNEL_ADMINISTRATIVE);
|
||||
$result = KnownTranslationFactory::chat_type_admin($source->getName(), $message);
|
||||
$colored = $result->prefix(TextFormat::GRAY . TextFormat::ITALIC);
|
||||
|
@ -24,7 +24,7 @@ declare(strict_types=1);
|
||||
namespace pocketmine\command;
|
||||
|
||||
use pocketmine\lang\Language;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\permission\Permissible;
|
||||
use pocketmine\Server;
|
||||
|
||||
@ -32,7 +32,7 @@ interface CommandSender extends Permissible{
|
||||
|
||||
public function getLanguage() : Language;
|
||||
|
||||
public function sendMessage(TranslationContainer|string $message) : void;
|
||||
public function sendMessage(Translatable|string $message) : void;
|
||||
|
||||
public function getServer() : Server;
|
||||
|
||||
|
@ -29,7 +29,7 @@ use pocketmine\item\enchantment\EnchantmentInstance;
|
||||
use pocketmine\item\enchantment\VanillaEnchantments;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\lang\KnownTranslationKeys;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\permission\DefaultPermissionNames;
|
||||
use pocketmine\utils\TextFormat;
|
||||
use function count;
|
||||
@ -86,7 +86,7 @@ class EnchantCommand extends VanillaCommand{
|
||||
$item->addEnchantment(new EnchantmentInstance($enchantment, $level));
|
||||
$player->getInventory()->setItemInHand($item);
|
||||
|
||||
self::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_ENCHANT_SUCCESS, [$player->getName()]));
|
||||
self::broadcastCommandMessage($sender, new Translatable(KnownTranslationKeys::COMMANDS_ENCHANT_SUCCESS, [$player->getName()]));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ use pocketmine\command\CommandSender;
|
||||
use pocketmine\command\utils\InvalidCommandSyntaxException;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\lang\KnownTranslationKeys;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\permission\DefaultPermissionNames;
|
||||
use pocketmine\player\GameMode;
|
||||
use pocketmine\player\Player;
|
||||
@ -81,7 +81,7 @@ class GamemodeCommand extends VanillaCommand{
|
||||
if($target === $sender){
|
||||
Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_gamemode_success_self($gameMode->getTranslationKey()));
|
||||
}else{
|
||||
$target->sendMessage(new TranslationContainer(KnownTranslationKeys::GAMEMODE_CHANGED, [$gameMode->getTranslationKey()]));
|
||||
$target->sendMessage(new Translatable(KnownTranslationKeys::GAMEMODE_CHANGED, [$gameMode->getTranslationKey()]));
|
||||
Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_gamemode_success_other($gameMode->getTranslationKey(), $target->getName()));
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ use pocketmine\command\Command;
|
||||
use pocketmine\command\CommandSender;
|
||||
use pocketmine\command\utils\InvalidCommandSyntaxException;
|
||||
use pocketmine\lang\KnownTranslationKeys;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\utils\TextFormat;
|
||||
use function is_numeric;
|
||||
use function substr;
|
||||
@ -83,11 +83,11 @@ abstract class VanillaCommand extends Command{
|
||||
|
||||
$v = (int) $input;
|
||||
if($v > $max){
|
||||
$sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_NUM_TOOBIG, [$input, (string) $max]));
|
||||
$sender->sendMessage(new Translatable(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_NUM_TOOBIG, [$input, (string) $max]));
|
||||
return null;
|
||||
}
|
||||
if($v < $min){
|
||||
$sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_NUM_TOOSMALL, [$input, (string) $min]));
|
||||
$sender->sendMessage(new Translatable(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_NUM_TOOSMALL, [$input, (string) $min]));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ namespace pocketmine\console;
|
||||
|
||||
use pocketmine\command\CommandSender;
|
||||
use pocketmine\lang\Language;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\permission\DefaultPermissions;
|
||||
use pocketmine\permission\PermissibleBase;
|
||||
use pocketmine\permission\PermissibleDelegateTrait;
|
||||
@ -58,9 +58,9 @@ class ConsoleCommandSender implements CommandSender{
|
||||
return $this->language;
|
||||
}
|
||||
|
||||
public function sendMessage(TranslationContainer|string $message) : void{
|
||||
public function sendMessage(Translatable|string $message) : void{
|
||||
$server = $this->getServer();
|
||||
if($message instanceof TranslationContainer){
|
||||
if($message instanceof Translatable){
|
||||
$message = $this->getLanguage()->translate($message);
|
||||
}else{
|
||||
$message = $this->getLanguage()->translateString($message);
|
||||
|
@ -31,23 +31,23 @@ use pocketmine\event\entity\EntityDamageEvent;
|
||||
use pocketmine\event\entity\EntityDeathEvent;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
class PlayerDeathEvent extends EntityDeathEvent{
|
||||
/** @var Player */
|
||||
protected $entity;
|
||||
|
||||
/** @var TranslationContainer|string */
|
||||
/** @var Translatable|string */
|
||||
private $deathMessage;
|
||||
/** @var bool */
|
||||
private $keepInventory = false;
|
||||
|
||||
/**
|
||||
* @param Item[] $drops
|
||||
* @param string|TranslationContainer|null $deathMessage Null will cause the default vanilla message to be used
|
||||
* @param Item[] $drops
|
||||
* @param string|Translatable|null $deathMessage Null will cause the default vanilla message to be used
|
||||
*/
|
||||
public function __construct(Player $entity, array $drops, int $xp, TranslationContainer|string|null $deathMessage){
|
||||
public function __construct(Player $entity, array $drops, int $xp, Translatable|string|null $deathMessage){
|
||||
parent::__construct($entity, $drops, $xp);
|
||||
$this->deathMessage = $deathMessage ?? self::deriveMessage($entity->getDisplayName(), $entity->getLastDamageCause());
|
||||
}
|
||||
@ -63,11 +63,11 @@ class PlayerDeathEvent extends EntityDeathEvent{
|
||||
return $this->entity;
|
||||
}
|
||||
|
||||
public function getDeathMessage() : TranslationContainer|string{
|
||||
public function getDeathMessage() : Translatable|string{
|
||||
return $this->deathMessage;
|
||||
}
|
||||
|
||||
public function setDeathMessage(TranslationContainer|string $deathMessage) : void{
|
||||
public function setDeathMessage(Translatable|string $deathMessage) : void{
|
||||
$this->deathMessage = $deathMessage;
|
||||
}
|
||||
|
||||
@ -82,7 +82,7 @@ class PlayerDeathEvent extends EntityDeathEvent{
|
||||
/**
|
||||
* Returns the vanilla death message for the given death cause.
|
||||
*/
|
||||
public static function deriveMessage(string $name, ?EntityDamageEvent $deathCause) : TranslationContainer{
|
||||
public static function deriveMessage(string $name, ?EntityDamageEvent $deathCause) : Translatable{
|
||||
switch($deathCause === null ? EntityDamageEvent::CAUSE_CUSTOM : $deathCause->getCause()){
|
||||
case EntityDamageEvent::CAUSE_ENTITY_ATTACK:
|
||||
if($deathCause instanceof EntityDamageByEntityEvent){
|
||||
|
@ -23,7 +23,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\event\player;
|
||||
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
/**
|
||||
@ -34,19 +34,19 @@ use pocketmine\player\Player;
|
||||
* @see PlayerLoginEvent
|
||||
*/
|
||||
class PlayerJoinEvent extends PlayerEvent{
|
||||
/** @var string|TranslationContainer */
|
||||
/** @var string|Translatable */
|
||||
protected $joinMessage;
|
||||
|
||||
public function __construct(Player $player, TranslationContainer|string $joinMessage){
|
||||
public function __construct(Player $player, Translatable|string $joinMessage){
|
||||
$this->player = $player;
|
||||
$this->joinMessage = $joinMessage;
|
||||
}
|
||||
|
||||
public function setJoinMessage(TranslationContainer|string $joinMessage) : void{
|
||||
public function setJoinMessage(Translatable|string $joinMessage) : void{
|
||||
$this->joinMessage = $joinMessage;
|
||||
}
|
||||
|
||||
public function getJoinMessage() : TranslationContainer|string{
|
||||
public function getJoinMessage() : Translatable|string{
|
||||
return $this->joinMessage;
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ namespace pocketmine\event\player;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\CancellableTrait;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
/**
|
||||
@ -34,13 +34,13 @@ use pocketmine\player\Player;
|
||||
class PlayerKickEvent extends PlayerEvent implements Cancellable{
|
||||
use CancellableTrait;
|
||||
|
||||
/** @var TranslationContainer|string */
|
||||
/** @var Translatable|string */
|
||||
protected $quitMessage;
|
||||
|
||||
/** @var string */
|
||||
protected $reason;
|
||||
|
||||
public function __construct(Player $player, string $reason, TranslationContainer|string $quitMessage){
|
||||
public function __construct(Player $player, string $reason, Translatable|string $quitMessage){
|
||||
$this->player = $player;
|
||||
$this->quitMessage = $quitMessage;
|
||||
$this->reason = $reason;
|
||||
@ -54,11 +54,11 @@ class PlayerKickEvent extends PlayerEvent implements Cancellable{
|
||||
return $this->reason;
|
||||
}
|
||||
|
||||
public function setQuitMessage(TranslationContainer|string $quitMessage) : void{
|
||||
public function setQuitMessage(Translatable|string $quitMessage) : void{
|
||||
$this->quitMessage = $quitMessage;
|
||||
}
|
||||
|
||||
public function getQuitMessage() : TranslationContainer|string{
|
||||
public function getQuitMessage() : Translatable|string{
|
||||
return $this->quitMessage;
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\event\player;
|
||||
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\player\Player;
|
||||
|
||||
/**
|
||||
@ -31,22 +31,22 @@ use pocketmine\player\Player;
|
||||
*/
|
||||
class PlayerQuitEvent extends PlayerEvent{
|
||||
|
||||
/** @var TranslationContainer|string */
|
||||
/** @var Translatable|string */
|
||||
protected $quitMessage;
|
||||
/** @var string */
|
||||
protected $quitReason;
|
||||
|
||||
public function __construct(Player $player, TranslationContainer|string $quitMessage, string $quitReason){
|
||||
public function __construct(Player $player, Translatable|string $quitMessage, string $quitReason){
|
||||
$this->player = $player;
|
||||
$this->quitMessage = $quitMessage;
|
||||
$this->quitReason = $quitReason;
|
||||
}
|
||||
|
||||
public function setQuitMessage(TranslationContainer|string $quitMessage) : void{
|
||||
public function setQuitMessage(Translatable|string $quitMessage) : void{
|
||||
$this->quitMessage = $quitMessage;
|
||||
}
|
||||
|
||||
public function getQuitMessage() : TranslationContainer|string{
|
||||
public function getQuitMessage() : Translatable|string{
|
||||
return $this->quitMessage;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -130,26 +130,26 @@ class Language{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param (float|int|string|TranslationContainer)[] $params
|
||||
* @param (float|int|string|Translatable)[] $params
|
||||
*/
|
||||
public function translateString(string $str, array $params = [], ?string $onlyPrefix = null) : string{
|
||||
$baseText = $this->get($str);
|
||||
$baseText = $this->parseTranslation(($onlyPrefix === null or strpos($str, $onlyPrefix) === 0) ? $baseText : $str, $onlyPrefix);
|
||||
|
||||
foreach($params as $i => $p){
|
||||
$replacement = $p instanceof TranslationContainer ? $this->translate($p) : $this->parseTranslation((string) $p);
|
||||
$replacement = $p instanceof Translatable ? $this->translate($p) : $this->parseTranslation((string) $p);
|
||||
$baseText = str_replace("{%$i}", $replacement, $baseText);
|
||||
}
|
||||
|
||||
return $baseText;
|
||||
}
|
||||
|
||||
public function translate(TranslationContainer $c) : string{
|
||||
public function translate(Translatable $c) : string{
|
||||
$baseText = $this->internalGet($c->getText());
|
||||
$baseText = $this->parseTranslation($baseText ?? $c->getText());
|
||||
|
||||
foreach($c->getParameters() as $i => $p){
|
||||
$replacement = $p instanceof TranslationContainer ? $this->translate($p) : $this->parseTranslation($p);
|
||||
$replacement = $p instanceof Translatable ? $this->translate($p) : $this->parseTranslation($p);
|
||||
$baseText = str_replace("{%$i}", $replacement, $baseText);
|
||||
}
|
||||
|
||||
|
@ -23,21 +23,21 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\lang;
|
||||
|
||||
final class TranslationContainer{
|
||||
final class Translatable{
|
||||
|
||||
/** @var string $text */
|
||||
protected $text;
|
||||
/** @var string[]|TranslationContainer[] $params */
|
||||
/** @var string[]|Translatable[] $params */
|
||||
protected $params = [];
|
||||
|
||||
/**
|
||||
* @param (float|int|string|TranslationContainer)[] $params
|
||||
* @param (float|int|string|Translatable)[] $params
|
||||
*/
|
||||
public function __construct(string $text, array $params = []){
|
||||
$this->text = $text;
|
||||
|
||||
foreach($params as $k => $param){
|
||||
if(!($param instanceof TranslationContainer)){
|
||||
if(!($param instanceof Translatable)){
|
||||
$this->params[$k] = (string) $param;
|
||||
}else{
|
||||
$this->params[$k] = $param;
|
||||
@ -50,13 +50,13 @@ final class TranslationContainer{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string[]|TranslationContainer[]
|
||||
* @return string[]|Translatable[]
|
||||
*/
|
||||
public function getParameters() : array{
|
||||
return $this->params;
|
||||
}
|
||||
|
||||
public function getParameter(int|string $i) : TranslationContainer|string|null{
|
||||
public function getParameter(int|string $i) : Translatable|string|null{
|
||||
return $this->params[$i] ?? null;
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ use pocketmine\item\ItemUseResult;
|
||||
use pocketmine\item\Releasable;
|
||||
use pocketmine\lang\KnownTranslationFactory;
|
||||
use pocketmine\lang\Language;
|
||||
use pocketmine\lang\TranslationContainer;
|
||||
use pocketmine\lang\Translatable;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\tag\IntTag;
|
||||
@ -319,7 +319,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
}
|
||||
}
|
||||
|
||||
public function getLeaveMessage() : TranslationContainer|string{
|
||||
public function getLeaveMessage() : Translatable|string{
|
||||
if($this->spawned){
|
||||
return KnownTranslationFactory::multiplayer_player_left($this->getDisplayName())->prefix(TextFormat::YELLOW);
|
||||
}
|
||||
@ -1772,8 +1772,8 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
/**
|
||||
* Sends a direct chat message to a player
|
||||
*/
|
||||
public function sendMessage(TranslationContainer|string $message) : void{
|
||||
if($message instanceof TranslationContainer){
|
||||
public function sendMessage(Translatable|string $message) : void{
|
||||
if($message instanceof Translatable){
|
||||
$this->sendTranslation($message->getText(), $message->getParameters());
|
||||
return;
|
||||
}
|
||||
@ -1782,11 +1782,11 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string[]|TranslationContainer[] $parameters
|
||||
* @param string[]|Translatable[] $parameters
|
||||
*/
|
||||
public function sendTranslation(string $message, array $parameters = []) : void{
|
||||
//we can't send nested translations to the client, so make sure they are always pre-translated by the server
|
||||
$parameters = array_map(fn(string|TranslationContainer $p) => $p instanceof TranslationContainer ? $this->getLanguage()->translate($p) : $p, $parameters);
|
||||
$parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $this->getLanguage()->translate($p) : $p, $parameters);
|
||||
if(!$this->server->isLanguageForced()){
|
||||
foreach($parameters as $i => $p){
|
||||
$parameters[$i] = $this->getLanguage()->translateString($p, [], "pocketmine.");
|
||||
@ -1873,7 +1873,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
/**
|
||||
* Kicks a player from the server
|
||||
*/
|
||||
public function kick(string $reason = "", TranslationContainer|string|null $quitMessage = null) : bool{
|
||||
public function kick(string $reason = "", Translatable|string|null $quitMessage = null) : bool{
|
||||
$ev = new PlayerKickEvent($this, $reason, $quitMessage ?? $this->getLeaveMessage());
|
||||
$ev->call();
|
||||
if(!$ev->isCancelled()){
|
||||
@ -1898,10 +1898,10 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
*
|
||||
* Note for internals developers: Do not call this from network sessions. It will cause a feedback loop.
|
||||
*
|
||||
* @param string $reason Shown to the player, usually this will appear on their disconnect screen.
|
||||
* @param TranslationContainer|string|null $quitMessage Message to broadcast to online players (null will use default)
|
||||
* @param string $reason Shown to the player, usually this will appear on their disconnect screen.
|
||||
* @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default)
|
||||
*/
|
||||
public function disconnect(string $reason, TranslationContainer|string|null $quitMessage = null) : void{
|
||||
public function disconnect(string $reason, Translatable|string|null $quitMessage = null) : void{
|
||||
if(!$this->isConnected()){
|
||||
return;
|
||||
}
|
||||
@ -1915,9 +1915,9 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
||||
* This method executes post-disconnect actions and cleanups.
|
||||
*
|
||||
* @param string $reason Shown to the player, usually this will appear on their disconnect screen.
|
||||
* @param TranslationContainer|string|null $quitMessage Message to broadcast to online players (null will use default)
|
||||
* @param Translatable|string|null $quitMessage Message to broadcast to online players (null will use default)
|
||||
*/
|
||||
public function onPostDisconnect(string $reason, TranslationContainer|string|null $quitMessage) : void{
|
||||
public function onPostDisconnect(string $reason, Translatable|string|null $quitMessage) : void{
|
||||
if($this->isConnected()){
|
||||
throw new \InvalidStateException("Player is still connected");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user