44import net .hypixel .modapi .error .ModAPIException ;
55import net .hypixel .modapi .handler .ClientboundPacketHandler ;
66import net .hypixel .modapi .packet .ClientboundHypixelPacket ;
7+ import net .hypixel .modapi .packet .HypixelPacket ;
78import net .hypixel .modapi .packet .PacketRegistry ;
89import net .hypixel .modapi .packet .impl .clientbound .*;
910import net .hypixel .modapi .packet .impl .serverbound .ServerboundLocationPacket ;
1415
1516import java .util .List ;
1617import java .util .concurrent .CopyOnWriteArrayList ;
18+ import java .util .function .Consumer ;
1719
1820public class HypixelModAPI {
1921 private static final HypixelModAPI INSTANCE = new HypixelModAPI ();
@@ -24,6 +26,7 @@ public static HypixelModAPI getInstance() {
2426
2527 private final PacketRegistry registry = new PacketRegistry ();
2628 private final List <ClientboundPacketHandler > handlers = new CopyOnWriteArrayList <>();
29+ private Consumer <HypixelPacket > packetSender = null ;
2730
2831 private HypixelModAPI () {
2932 registry .define ("hypixel:ping" )
@@ -73,9 +76,26 @@ public void handle(String identifier, PacketSerializer serializer) {
7376 return ;
7477 }
7578
79+ handle (packet );
80+ }
81+
82+ public void handle (ClientboundHypixelPacket packet ) {
7683 for (ClientboundPacketHandler handler : handlers ) {
7784 packet .handle (handler );
7885 }
7986 }
8087
88+ public void setPacketSender (Consumer <HypixelPacket > packetSender ) {
89+ if (this .packetSender != null ) {
90+ throw new IllegalArgumentException ("Packet sender already set" );
91+ }
92+ this .packetSender = packetSender ;
93+ }
94+
95+ public void sendPacket (HypixelPacket packet ) {
96+ if (packetSender == null ) {
97+ throw new IllegalStateException ("Packet sender not set" );
98+ }
99+ packetSender .accept (packet );
100+ }
81101}
0 commit comments