protected function handlePacket(DesktopPlayer $player, $payload) { $pid = ord($payload[0]); $offset = 1; $status = $player->bigBrother_getStatus(); if ($status === 1) { switch ($pid) { case 0x1: $pk = new CTSChatPacket(); break; case 0x2: $pk = new UseEntityPacket(); break; case 0x4: $pk = new PlayerPositionPacket(); break; case 0x5: $pk = new PlayerLookPacket(); break; case 0x6: $pk = new PlayerPositionAndLookPacket(); break; case 0x7: $pk = new PlayerDiggingPacket(); break; case 0x8: $pk = new PlayerBlockPlacementPacket(); break; case 0xd: $pk = new CTSCloseWindowPacket(); break; case 0x16: $pk = new ClientStatusPacket(); break; default: return; } $pk->read($payload, $offset); $this->receivePacket($player, $pk); } elseif ($status === 0) { if ($pid === 0x0) { $pk = new LoginStartPacket(); $pk->read($payload, $offset); $player->bigBrother_handleAuthentication($this->plugin, $pk->name, $this->plugin->isOnlineMode()); } elseif ($pid === 0x1 and $this->plugin->isOnlineMode()) { $pk = new EncryptionResponsePacket(); $pk->read($payload, $offset); $player->bigBrother_processAuthentication($this->plugin, $pk); } else { $player->close(TextFormat::YELLOW . $player->getName() . " has left the game", "Unexpected packet {$pid}"); } } }
protected function handlePacket(DesktopPlayer $player, $payload) { echo "[Receive:Interface] 0x" . bin2hex(chr($payload)) . "\n"; $pid = ord($payload[0]); $offset = 1; $status = $player->bigBrother_getStatus(); if ($status === 1) { switch ($pid) { case 0x0: $pk = new TeleportConfirmPacket(); break; /*case 0x00: $pk = new KeepAlivePacket(); break; case 0x01: $pk = new CTSChatPacket(); break; case 0x02: $pk = new UseEntityPacket(); break; case 0x03: $pk = new PlayerPacket(); break; case 0x04: $pk = new PlayerPositionPacket(); break; case 0x05: $pk = new PlayerLookPacket(); break; case 0x06: $pk = new PlayerPositionAndLookPacket(); break; case 0x07: $pk = new PlayerDiggingPacket(); break; case 0x08: $pk = new PlayerBlockPlacementPacket(); break; case 0x09: $pk = new HeldItemChangePacket(); break; case 0x0a: $pk = new PlayerArmSwingPacket(); break; case 0x0b: $pk = new AnimatePacket(); break; case 0x0d: $pk = new CTSCloseWindowPacket(); break; case 0x0e: break; case 0x0f: break; case 0x10: $pk = new CreativeInventoryActionPacket(); break; case 0x11: break; case 0x12: $pk = new CPlayerAbilitiesPacket(); break; case 0x14: $pk = new CTabCompletePacket(); break; case 0x15: $pk = new ClientSettingsPacket(); break; case 0x16: $pk = new ClientStatusPacket(); break; case 0x17: $pk = new PluginMessagePacket(); break; case 0x18: break; case 0x19: $pk = new ResourcePackStatusPacket(); break;*/ /*case 0x00: $pk = new KeepAlivePacket(); break; case 0x01: $pk = new CTSChatPacket(); break; case 0x02: $pk = new UseEntityPacket(); break; case 0x03: $pk = new PlayerPacket(); break; case 0x04: $pk = new PlayerPositionPacket(); break; case 0x05: $pk = new PlayerLookPacket(); break; case 0x06: $pk = new PlayerPositionAndLookPacket(); break; case 0x07: $pk = new PlayerDiggingPacket(); break; case 0x08: $pk = new PlayerBlockPlacementPacket(); break; case 0x09: $pk = new HeldItemChangePacket(); break; case 0x0a: $pk = new PlayerArmSwingPacket(); break; case 0x0b: $pk = new AnimatePacket(); break; case 0x0d: $pk = new CTSCloseWindowPacket(); break; case 0x0e: break; case 0x0f: break; case 0x10: $pk = new CreativeInventoryActionPacket(); break; case 0x11: break; case 0x12: $pk = new CPlayerAbilitiesPacket(); break; case 0x14: $pk = new CTabCompletePacket(); break; case 0x15: $pk = new ClientSettingsPacket(); break; case 0x16: $pk = new ClientStatusPacket(); break; case 0x17: $pk = new PluginMessagePacket(); break; case 0x18: break; case 0x19: $pk = new ResourcePackStatusPacket(); break;*/ default: echo "[Receive] 0x" . bin2hex(chr($pid)) . "\n"; //Debug return; } $pk->read($payload, $offset); $this->receivePacket($player, $pk); } elseif ($status === 0) { if ($pid === 0x0) { echo "LoginStart\n"; $pk = new LoginStartPacket(); $pk->read($payload, $offset); $player->bigBrother_handleAuthentication($this->plugin, $pk->name, $this->plugin->isOnlineMode()); } elseif ($pid === 0x1 and $this->plugin->isOnlineMode()) { echo "EncryptionResponse\n"; $pk = new EncryptionResponsePacket(); $pk->read($payload, $offset); $player->bigBrother_processAuthentication($this->plugin, $pk); } else { $player->close($player->getLeaveMessage(), "Unexpected packet {$pid}"); } } }