diff --git a/src/network/mcpe/convert/TypeConverter.php b/src/network/mcpe/convert/TypeConverter.php index 54974cc94..e856d4a51 100644 --- a/src/network/mcpe/convert/TypeConverter.php +++ b/src/network/mcpe/convert/TypeConverter.php @@ -91,7 +91,7 @@ class TypeConverter{ } } - public function protocolGameModeToCore(int $gameMode) : GameMode{ + public function protocolGameModeToCore(int $gameMode) : ?GameMode{ switch($gameMode){ case ProtocolGameMode::SURVIVAL: return GameMode::SURVIVAL(); @@ -103,7 +103,7 @@ class TypeConverter{ case ProtocolGameMode::SURVIVAL_VIEWER: return GameMode::SPECTATOR(); default: - throw new \UnexpectedValueException("Unmapped protocol game mode $gameMode"); + return null; } } diff --git a/src/network/mcpe/handler/InGamePacketHandler.php b/src/network/mcpe/handler/InGamePacketHandler.php index c43bb5c58..b070a3185 100644 --- a/src/network/mcpe/handler/InGamePacketHandler.php +++ b/src/network/mcpe/handler/InGamePacketHandler.php @@ -667,8 +667,8 @@ class InGamePacketHandler extends PacketHandler{ } public function handleSetPlayerGameType(SetPlayerGameTypePacket $packet) : bool{ - $converter = TypeConverter::getInstance(); - if(!$converter->protocolGameModeToCore($packet->gamemode)->equals($this->player->getGamemode())){ + $gameMode = TypeConverter::getInstance()->protocolGameModeToCore($packet->gamemode); + if($gameMode === null || !$gameMode->equals($this->player->getGamemode())){ //Set this back to default. TODO: handle this properly $this->session->syncGameMode($this->player->getGamemode(), true); }