44import com .luminiadev .bridge .network .codec .packet .BridgePacket ;
55import com .luminiadev .bridge .network .codec .packet .BridgePacketDefinition ;
66import com .luminiadev .bridge .network .codec .packet .BridgePacketFactory ;
7+ import com .luminiadev .bridge .network .codec .packet .BridgeUnknownPacket ;
78import com .luminiadev .bridge .network .codec .packet .serializer .BridgePacketSerializer ;
89import com .luminiadev .bridge .util .ByteBuffer ;
910import org .jetbrains .annotations .Nullable ;
@@ -47,7 +48,7 @@ public void unregisterPacket(String packetId) {
4748 }
4849 }
4950
50- @ SuppressWarnings ("unchecked" )
51+ @ SuppressWarnings ({ "unchecked" , "rawtypes" } )
5152 public BridgePacket tryDecode (ByteBuffer buffer , String packetId ) {
5253 BridgePacketDefinition <? extends BridgePacket > definition = this .getPacketDefinition (packetId );
5354
@@ -57,7 +58,11 @@ public BridgePacket tryDecode(ByteBuffer buffer, String packetId) {
5758 packet = definition .getFactory ().create ();
5859 serializer = (BridgePacketSerializer <BridgePacket >) definition .getSerializer ();
5960 } else {
60- throw new BridgeCodecException ("Definition for packet with id " + packetId + " not found" );
61+ BridgeUnknownPacket unknownPacket = new BridgeUnknownPacket ();
62+ unknownPacket .setOriginalId (packetId );
63+ unknownPacket .setOriginalPayload (buffer );
64+ packet = unknownPacket ;
65+ serializer = (BridgePacketSerializer ) new BridgeUnknownPacket .BridgeUnknownPacketSerializer ();
6166 }
6267
6368 serializer .deserialize (buffer , packet );
@@ -66,11 +71,16 @@ public BridgePacket tryDecode(ByteBuffer buffer, String packetId) {
6671
6772 @ SuppressWarnings ("unchecked" )
6873 public <T extends BridgePacket > void tryEncode (ByteBuffer buffer , T packet ) {
69- BridgePacketDefinition <T > definition = (BridgePacketDefinition <T >) this .getPacketDefinition (packet .getId ());
70- if (definition == null ) {
71- throw new BridgeCodecException ("Definition for packet with id " + packet .getId () + " not found" );
74+ BridgePacketSerializer <T > serializer ;
75+ if (packet instanceof BridgeUnknownPacket ) {
76+ serializer = (BridgePacketSerializer <T >) new BridgeUnknownPacket .BridgeUnknownPacketSerializer ();
77+ } else {
78+ BridgePacketDefinition <T > definition = (BridgePacketDefinition <T >) this .getPacketDefinition (packet .getId ());
79+ if (definition == null ) {
80+ throw new BridgeCodecException ("Definition for packet with id " + packet .getId () + " not found" );
81+ }
82+ serializer = definition .getSerializer ();
7283 }
73- BridgePacketSerializer <T > serializer = definition .getSerializer ();
7484 serializer .serialize (buffer , packet );
7585 }
7686
0 commit comments