예제 #1
0
 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}");
         }
     }
 }
예제 #2
0
 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}");
         }
     }
 }