diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 9f14466e9..d623805ce 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -132,6 +132,7 @@ use pocketmine\network\mcpe\protocol\EntityEventPacket; use pocketmine\network\mcpe\protocol\ExplodePacket; use pocketmine\network\mcpe\protocol\FullChunkDataPacket; use pocketmine\network\mcpe\protocol\HurtArmorPacket; +use pocketmine\network\mcpe\protocol\MapInfoRequestPacket; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\InteractPacket; use pocketmine\network\mcpe\protocol\InventoryActionPacket; @@ -3203,6 +3204,10 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade return false; //TODO } + public function handleMapInfoRequest(MapInfoRequestPacket $packet) : bool{ + return false; //TODO + } + public function handleRequestChunkRadius(RequestChunkRadiusPacket $packet) : bool{ $this->setViewDistance($packet->radius); diff --git a/src/pocketmine/network/Network.php b/src/pocketmine/network/Network.php index 3eed90c6c..663d7de36 100644 --- a/src/pocketmine/network/Network.php +++ b/src/pocketmine/network/Network.php @@ -54,6 +54,7 @@ use pocketmine\network\mcpe\protocol\EntityEventPacket; use pocketmine\network\mcpe\protocol\ExplodePacket; use pocketmine\network\mcpe\protocol\FullChunkDataPacket; use pocketmine\network\mcpe\protocol\HurtArmorPacket; +use pocketmine\network\mcpe\protocol\MapInfoRequestPacket; use pocketmine\network\mcpe\protocol\ProtocolInfo; use pocketmine\network\mcpe\protocol\InteractPacket; use pocketmine\network\mcpe\protocol\InventoryActionPacket; @@ -348,6 +349,7 @@ class Network{ $this->registerPacket(ProtocolInfo::LEVEL_EVENT_PACKET, LevelEventPacket::class); $this->registerPacket(ProtocolInfo::LEVEL_SOUND_EVENT_PACKET, LevelSoundEventPacket::class); $this->registerPacket(ProtocolInfo::LOGIN_PACKET, LoginPacket::class); + $this->registerPacket(ProtocolInfo::MAP_INFO_REQUEST_PACKET, MapInfoRequestPacket::class); $this->registerPacket(ProtocolInfo::MOB_ARMOR_EQUIPMENT_PACKET, MobArmorEquipmentPacket::class); $this->registerPacket(ProtocolInfo::MOB_EQUIPMENT_PACKET, MobEquipmentPacket::class); $this->registerPacket(ProtocolInfo::MOVE_ENTITY_PACKET, MoveEntityPacket::class); diff --git a/src/pocketmine/network/mcpe/NetworkSession.php b/src/pocketmine/network/mcpe/NetworkSession.php index e655269f5..62b12647e 100644 --- a/src/pocketmine/network/mcpe/NetworkSession.php +++ b/src/pocketmine/network/mcpe/NetworkSession.php @@ -58,6 +58,7 @@ use pocketmine\network\mcpe\protocol\ItemFrameDropItemPacket; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\LoginPacket; +use pocketmine\network\mcpe\protocol\MapInfoRequestPacket; use pocketmine\network\mcpe\protocol\MobArmorEquipmentPacket; use pocketmine\network\mcpe\protocol\MobEffectPacket; use pocketmine\network\mcpe\protocol\MobEquipmentPacket; @@ -235,7 +236,7 @@ interface NetworkSession{ //public function handleClientboundMapItemData(ClientboundMapItemDataPacket $packet) : bool; //TODO - //public function handleMapInfoRequest(MapInfoRequestPacket $packet) : bool; //TODO + public function handleMapInfoRequest(MapInfoRequestPacket $packet) : bool; //TODO public function handleRequestChunkRadius(RequestChunkRadiusPacket $packet) : bool; diff --git a/src/pocketmine/network/mcpe/protocol/MapInfoRequestPacket.php b/src/pocketmine/network/mcpe/protocol/MapInfoRequestPacket.php new file mode 100644 index 000000000..98b65a970 --- /dev/null +++ b/src/pocketmine/network/mcpe/protocol/MapInfoRequestPacket.php @@ -0,0 +1,47 @@ + + + +use pocketmine\network\mcpe\NetworkSession; + +class MapInfoRequestPacket extends DataPacket{ + const NETWORK_ID = ProtocolInfo::MAP_INFO_REQUEST_PACKET; + + public $mapId; + + public function decode(){ + $this->mapId = $this->getVarInt(); //signed var-long, actually entity ID (needs fixing) + } + + public function encode(){ + $this->reset(); + $this->putVarInt($this->mapId); + } + + public function handle(NetworkSession $session) : bool{ + return $session->handleMapInfoRequest($this); + } +} \ No newline at end of file