@@ -63,9 +63,16 @@ public function handle($packet, $session): bool {
6363 self ::$ processedPackets [$ packetId ] = true ;
6464
6565 $ server = Server::getInstance ();
66- $ disassembled = AvailableCommandsPacketDisassembler::disassemble ($ packet );
66+ $ logger = $ server ->getLogger ();
67+
68+ try {
69+ $ disassembled = AvailableCommandsPacketDisassembler::disassemble ($ packet );
70+ } catch (\Throwable $ e ) {
71+ $ logger ->warning ("[LibCommand] Failed to disassemble packet: " . $ e ->getMessage ());
72+ return true ;
73+ }
6774 $ commandDataList = $ disassembled ->commandData ;
68-
75+
6976 foreach ($ commandDataList as $ index => $ commandData ) {
7077 $ cmd = $ server ->getCommandMap ()->getCommand ($ commandData ->getName ());
7178 if (!($ cmd instanceof Command)) {
@@ -81,13 +88,20 @@ public function handle($packet, $session): bool {
8188 }
8289
8390 // Rebuild command UI
84- $ commandData ->overloads = $ this ->getOverloads ($ player , $ cmd );
91+ $ overloads = $ this ->getOverloads ($ player , $ cmd );
92+ $ logger ->debug ("[LibCommand] Command ' {$ commandData ->getName ()}' overloads: " . count ($ overloads ) . ", args: " . count ($ cmd ->getArguments ()));
93+ $ commandData ->overloads = $ overloads ;
8594 }
8695
8796 // Send modified packet
88- $ modifiedPacket = AvailableCommandsPacketAssembler::assemble ($ commandDataList , [], CommandEnumManager::getEnums ());
97+ try {
98+ $ modifiedPacket = AvailableCommandsPacketAssembler::assemble (array_values ($ commandDataList ), [], CommandEnumManager::getEnums ());
99+ } catch (\Throwable $ e ) {
100+ $ logger ->warning ("[LibCommand] Failed to assemble packet: " . $ e ->getMessage ());
101+ return true ;
102+ }
89103 self ::$ processedPackets [spl_object_id ($ modifiedPacket )] = true ;
90-
104+
91105 $ session ->sendDataPacket ($ modifiedPacket );
92106
93107 // Clean up old packet ID from tracking
0 commit comments