private function getPacket($buffer) { $pid = ord($buffer[0]); if (($data = $this->getPacketFromPool($pid)) === null) { $data = new UnknownPacket(); $data->packetID = $pid; } $data->setBuffer(substr($buffer, 1)); return $data; }
private function getPacket($buffer) { $pid = \ord($buffer[0]); if (($data = $this->network->getPacket($pid)) === \null) { $data = new UnknownPacket(); $data->packetID = $pid; } $data->setBuffer($buffer, 1); return $data; }
private function getPacket($buffer) { $pid = ord($buffer[0]); switch ($pid) { //TODO: more efficient selection based on range case ProtocolInfo::LOGIN_PACKET: $data = new LoginPacket(); break; case ProtocolInfo::LOGIN_STATUS_PACKET: $data = new LoginStatusPacket(); break; case ProtocolInfo::MESSAGE_PACKET: $data = new MessagePacket(); break; case ProtocolInfo::SET_TIME_PACKET: $data = new SetTimePacket(); break; case ProtocolInfo::START_GAME_PACKET: $data = new StartGamePacket(); break; case ProtocolInfo::ADD_MOB_PACKET: $data = new AddMobPacket(); break; case ProtocolInfo::ADD_PLAYER_PACKET: $data = new AddPlayerPacket(); break; case ProtocolInfo::REMOVE_PLAYER_PACKET: $data = new RemovePlayerPacket(); break; case ProtocolInfo::ADD_ENTITY_PACKET: $data = new AddEntityPacket(); break; case ProtocolInfo::REMOVE_ENTITY_PACKET: $data = new RemoveEntityPacket(); break; case ProtocolInfo::ADD_ITEM_ENTITY_PACKET: $data = new AddItemEntityPacket(); break; case ProtocolInfo::TAKE_ITEM_ENTITY_PACKET: $data = new TakeItemEntityPacket(); break; case ProtocolInfo::MOVE_ENTITY_PACKET: $data = new MoveEntityPacket(); break; case ProtocolInfo::ROTATE_HEAD_PACKET: $data = new RotateHeadPacket(); break; case ProtocolInfo::MOVE_PLAYER_PACKET: $data = new MovePlayerPacket(); break; case ProtocolInfo::REMOVE_BLOCK_PACKET: $data = new RemoveBlockPacket(); break; case ProtocolInfo::UPDATE_BLOCK_PACKET: $data = new UpdateBlockPacket(); break; case ProtocolInfo::ADD_PAINTING_PACKET: $data = new AddPaintingPacket(); break; case ProtocolInfo::EXPLODE_PACKET: $data = new ExplodePacket(); break; case ProtocolInfo::LEVEL_EVENT_PACKET: $data = new LevelEventPacket(); break; case ProtocolInfo::TILE_EVENT_PACKET: $data = new TileEventPacket(); break; case ProtocolInfo::ENTITY_EVENT_PACKET: $data = new EntityEventPacket(); break; case ProtocolInfo::PLAYER_EQUIPMENT_PACKET: $data = new PlayerEquipmentPacket(); break; case ProtocolInfo::PLAYER_ARMOR_EQUIPMENT_PACKET: $data = new PlayerArmorEquipmentPacket(); break; case ProtocolInfo::INTERACT_PACKET: $data = new InteractPacket(); break; case ProtocolInfo::USE_ITEM_PACKET: $data = new UseItemPacket(); break; case ProtocolInfo::PLAYER_ACTION_PACKET: $data = new PlayerActionPacket(); break; case ProtocolInfo::HURT_ARMOR_PACKET: $data = new HurtArmorPacket(); break; case ProtocolInfo::SET_ENTITY_DATA_PACKET: $data = new SetEntityDataPacket(); break; case ProtocolInfo::SET_ENTITY_MOTION_PACKET: $data = new SetEntityMotionPacket(); break; case ProtocolInfo::SET_HEALTH_PACKET: $data = new SetHealthPacket(); break; case ProtocolInfo::SET_SPAWN_POSITION_PACKET: $data = new SetSpawnPositionPacket(); break; case ProtocolInfo::ANIMATE_PACKET: $data = new AnimatePacket(); break; case ProtocolInfo::RESPAWN_PACKET: $data = new RespawnPacket(); break; case ProtocolInfo::SEND_INVENTORY_PACKET: $data = new SendInventoryPacket(); break; case ProtocolInfo::DROP_ITEM_PACKET: $data = new DropItemPacket(); break; case ProtocolInfo::CONTAINER_OPEN_PACKET: $data = new ContainerOpenPacket(); break; case ProtocolInfo::CONTAINER_CLOSE_PACKET: $data = new ContainerClosePacket(); break; case ProtocolInfo::CONTAINER_SET_SLOT_PACKET: $data = new ContainerSetSlotPacket(); break; case ProtocolInfo::CONTAINER_SET_DATA_PACKET: $data = new ContainerSetDataPacket(); break; case ProtocolInfo::CONTAINER_SET_CONTENT_PACKET: $data = new ContainerSetContentPacket(); break; case ProtocolInfo::CHAT_PACKET: $data = new ChatPacket(); break; case ProtocolInfo::ADVENTURE_SETTINGS_PACKET: $data = new AdventureSettingsPacket(); break; case ProtocolInfo::ENTITY_DATA_PACKET: $data = new EntityDataPacket(); break; case ProtocolInfo::UNLOAD_CHUNK_PACKET: $data = new UnloadChunkPacket(); break; default: $data = new UnknownPacket(); $data->packetID = $pid; break; } $data->setBuffer(substr($buffer, 1)); return $data; }