From 886b40a4551fb71d81ca9ddc89230e4de646e101 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 13 Feb 2023 14:10:25 +0000 Subject: [PATCH] =?UTF-8?q?=C3=82Localize=20disconnect=20reasons=20for=20R?= =?UTF-8?q?akLib=20disconnects?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 2 +- composer.lock | 14 +++++++------- src/lang/KnownTranslationFactory.php | 12 ++++++++++++ src/lang/KnownTranslationKeys.php | 3 +++ src/network/mcpe/NetworkSession.php | 2 +- src/network/mcpe/raklib/RakLibInterface.php | 7 ++++++- 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/composer.json b/composer.json index 4a26ad682..14af18c14 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,7 @@ "pocketmine/classloader": "^0.3.0", "pocketmine/color": "^0.3.0", "pocketmine/errorhandler": "^0.6.0", - "pocketmine/locale-data": "~2.18.0", + "pocketmine/locale-data": "~2.19.0", "pocketmine/log": "^0.4.0", "pocketmine/log-pthreads": "^0.5.0", "pocketmine/math": "^0.4.0", diff --git a/composer.lock b/composer.lock index 4a8fab0f9..808f1f371 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4e1a995669862685144f13d26f45fd6d", + "content-hash": "ba82d633c6f28c95ea7dbe0dc97be7f0", "packages": [ { "name": "adhocore/json-comment", @@ -589,16 +589,16 @@ }, { "name": "pocketmine/locale-data", - "version": "2.18.3", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/pmmp/Language.git", - "reference": "da25bfe9ee4822a84feb9b7e620c56ad4000aed0" + "reference": "f47d1687f21f09d2858f040873184a11746b1cf7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pmmp/Language/zipball/da25bfe9ee4822a84feb9b7e620c56ad4000aed0", - "reference": "da25bfe9ee4822a84feb9b7e620c56ad4000aed0", + "url": "https://api.github.com/repos/pmmp/Language/zipball/f47d1687f21f09d2858f040873184a11746b1cf7", + "reference": "f47d1687f21f09d2858f040873184a11746b1cf7", "shasum": "" }, "type": "library", @@ -606,9 +606,9 @@ "description": "Language resources used by PocketMine-MP", "support": { "issues": "https://github.com/pmmp/Language/issues", - "source": "https://github.com/pmmp/Language/tree/2.18.3" + "source": "https://github.com/pmmp/Language/tree/2.19.0" }, - "time": "2023-01-17T21:43:36+00:00" + "time": "2023-02-13T13:55:22+00:00" }, { "name": "pocketmine/log", diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index 07a8b17b4..ea8c2952e 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -1606,6 +1606,14 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_BAN_NOREASON, []); } + public static function pocketmine_disconnect_clientDisconnect() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_CLIENTDISCONNECT, []); + } + + public static function pocketmine_disconnect_clientReconnect() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_CLIENTRECONNECT, []); + } + public static function pocketmine_disconnect_error(Translatable|string $error, Translatable|string $errorId) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR, [ "error" => $error, @@ -1633,6 +1641,10 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_RESPAWN, []); } + public static function pocketmine_disconnect_error_timeout() : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_ERROR_TIMEOUT, []); + } + public static function pocketmine_disconnect_incompatibleProtocol(Translatable|string $param0) : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL, [ 0 => $param0, diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index 3221ecbdc..c83452730 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -349,12 +349,15 @@ final class KnownTranslationKeys{ public const POCKETMINE_DISCONNECT_BAN_HARDCORE = "pocketmine.disconnect.ban.hardcore"; public const POCKETMINE_DISCONNECT_BAN_IP = "pocketmine.disconnect.ban.ip"; public const POCKETMINE_DISCONNECT_BAN_NOREASON = "pocketmine.disconnect.ban.noReason"; + public const POCKETMINE_DISCONNECT_CLIENTDISCONNECT = "pocketmine.disconnect.clientDisconnect"; + public const POCKETMINE_DISCONNECT_CLIENTRECONNECT = "pocketmine.disconnect.clientReconnect"; public const POCKETMINE_DISCONNECT_ERROR = "pocketmine.disconnect.error"; public const POCKETMINE_DISCONNECT_ERROR_AUTHENTICATION = "pocketmine.disconnect.error.authentication"; public const POCKETMINE_DISCONNECT_ERROR_BADPACKET = "pocketmine.disconnect.error.badPacket"; public const POCKETMINE_DISCONNECT_ERROR_INTERNAL = "pocketmine.disconnect.error.internal"; public const POCKETMINE_DISCONNECT_ERROR_LOGINTIMEOUT = "pocketmine.disconnect.error.loginTimeout"; public const POCKETMINE_DISCONNECT_ERROR_RESPAWN = "pocketmine.disconnect.error.respawn"; + public const POCKETMINE_DISCONNECT_ERROR_TIMEOUT = "pocketmine.disconnect.error.timeout"; public const POCKETMINE_DISCONNECT_INCOMPATIBLEPROTOCOL = "pocketmine.disconnect.incompatibleProtocol"; public const POCKETMINE_DISCONNECT_INVALIDSESSION = "pocketmine.disconnect.invalidSession"; public const POCKETMINE_DISCONNECT_INVALIDSESSION_BADSIGNATURE = "pocketmine.disconnect.invalidSession.badSignature"; diff --git a/src/network/mcpe/NetworkSession.php b/src/network/mcpe/NetworkSession.php index 87731d791..44b1e3003 100644 --- a/src/network/mcpe/NetworkSession.php +++ b/src/network/mcpe/NetworkSession.php @@ -668,7 +668,7 @@ class NetworkSession{ * Called by the network interface to close the session when the client disconnects without server input, for * example in a timeout condition or voluntary client disconnect. */ - public function onClientDisconnect(string $reason) : void{ + public function onClientDisconnect(Translatable|string $reason) : void{ $this->tryDisconnect(function() use ($reason) : void{ if($this->player !== null){ $this->player->onPostDisconnect($reason, null); diff --git a/src/network/mcpe/raklib/RakLibInterface.php b/src/network/mcpe/raklib/RakLibInterface.php index f09eff2e6..412a74152 100644 --- a/src/network/mcpe/raklib/RakLibInterface.php +++ b/src/network/mcpe/raklib/RakLibInterface.php @@ -147,7 +147,12 @@ class RakLibInterface implements ServerEventListener, AdvancedNetworkInterface{ if(isset($this->sessions[$sessionId])){ $session = $this->sessions[$sessionId]; unset($this->sessions[$sessionId]); - $session->onClientDisconnect(DisconnectReason::toString($reason)); + $session->onClientDisconnect(match($reason){ + DisconnectReason::CLIENT_DISCONNECT => KnownTranslationFactory::pocketmine_disconnect_clientDisconnect(), + DisconnectReason::PEER_TIMEOUT => KnownTranslationFactory::pocketmine_disconnect_error_timeout(), + DisconnectReason::CLIENT_RECONNECT => KnownTranslationFactory::pocketmine_disconnect_clientReconnect(), + default => "Unknown RakLib disconnect reason (ID $reason)" + }); } }