4
4
import net .hypixel .modapi .error .ModAPIException ;
5
5
import net .hypixel .modapi .handler .ClientboundPacketHandler ;
6
6
import net .hypixel .modapi .packet .ClientboundHypixelPacket ;
7
+ import net .hypixel .modapi .packet .HypixelPacket ;
7
8
import net .hypixel .modapi .packet .PacketRegistry ;
8
9
import net .hypixel .modapi .packet .impl .clientbound .*;
9
10
import net .hypixel .modapi .packet .impl .serverbound .ServerboundLocationPacket ;
14
15
15
16
import java .util .List ;
16
17
import java .util .concurrent .CopyOnWriteArrayList ;
18
+ import java .util .function .Consumer ;
17
19
18
20
public class HypixelModAPI {
19
21
private static final HypixelModAPI INSTANCE = new HypixelModAPI ();
@@ -24,6 +26,7 @@ public static HypixelModAPI getInstance() {
24
26
25
27
private final PacketRegistry registry = new PacketRegistry ();
26
28
private final List <ClientboundPacketHandler > handlers = new CopyOnWriteArrayList <>();
29
+ private Consumer <HypixelPacket > packetSender = null ;
27
30
28
31
private HypixelModAPI () {
29
32
registry .define ("hypixel:ping" )
@@ -73,9 +76,26 @@ public void handle(String identifier, PacketSerializer serializer) {
73
76
return ;
74
77
}
75
78
79
+ handle (packet );
80
+ }
81
+
82
+ public void handle (ClientboundHypixelPacket packet ) {
76
83
for (ClientboundPacketHandler handler : handlers ) {
77
84
packet .handle (handler );
78
85
}
79
86
}
80
87
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
+ }
81
101
}
0 commit comments