@@ -9,19 +9,21 @@ import dev.slne.surf.surfapi.bukkit.api.nms.listener.NmsServerboundPacketListene
99import dev.slne.surf.surfapi.bukkit.api.nms.listener.packets.clientbound.NmsClientboundPacket
1010import dev.slne.surf.surfapi.bukkit.api.nms.listener.packets.serverbound.NmsServerboundPacket
1111import dev.slne.surf.surfapi.bukkit.api.packet.listener.listener.PacketListenerResult
12- import dev.slne.surf.surfapi.core.api.util.*
13- import it.unimi.dsi.fastutil.objects.ObjectSet
12+ import dev.slne.surf.surfapi.core.api.util.checkInstantiationByServiceLoader
13+ import dev.slne.surf.surfapi.core.api.util.logger
1414import org.bukkit.entity.Player
15+ import java.util.concurrent.ConcurrentHashMap
16+ import java.util.concurrent.CopyOnWriteArraySet
1517
1618@AutoService(SurfBukkitNmsBridge ::class )
1719@NmsUseWithCaution
1820class SurfBukkitNmsBridgeImpl : SurfBukkitNmsBridge {
1921 private val log = logger()
2022
2123 private val serverboundPacketListeners =
22- mutableObject2ObjectMapOf <Class <* >, ObjectSet <NmsServerboundPacketListener <* >>>().synchronize ()
24+ ConcurrentHashMap <Class <* >, CopyOnWriteArraySet <NmsServerboundPacketListener <* >>>()
2325 private val clientboundPacketListeners =
24- mutableObject2ObjectMapOf <Class <* >, ObjectSet <NmsClientboundPacketListener <* >>>().synchronize ()
26+ ConcurrentHashMap <Class <* >, CopyOnWriteArraySet <NmsClientboundPacketListener <* >>>()
2527
2628 init {
2729 checkInstantiationByServiceLoader()
@@ -30,7 +32,7 @@ class SurfBukkitNmsBridgeImpl : SurfBukkitNmsBridge {
3032 override fun registerServerboundPacketListener (listener : NmsServerboundPacketListener <* >) {
3133 val packetClass = listener.packetClass
3234 val added =
33- serverboundPacketListeners.computeIfAbsent(packetClass) { mutableObjectSetOf () }.add(listener)
35+ serverboundPacketListeners.computeIfAbsent(packetClass) { CopyOnWriteArraySet () }.add(listener)
3436
3537 if (! added) {
3638 log.atWarning()
@@ -52,7 +54,7 @@ class SurfBukkitNmsBridgeImpl : SurfBukkitNmsBridge {
5254 override fun registerClientboundPacketListener (listener : NmsClientboundPacketListener <* >) {
5355 val packetClass = listener.packetClass
5456 val added =
55- clientboundPacketListeners.computeIfAbsent(packetClass) { mutableObjectSetOf () }.add(listener)
57+ clientboundPacketListeners.computeIfAbsent(packetClass) { CopyOnWriteArraySet () }.add(listener)
5658
5759 if (! added) {
5860 log.atWarning()
@@ -77,13 +79,16 @@ class SurfBukkitNmsBridgeImpl : SurfBukkitNmsBridge {
7779 player : Player ,
7880 ): Packet ? {
7981 val clazz = packet.packetClass
80-
8182 val listener = serverboundPacketListeners[clazz] ? : return packet
8283
83- val cancel = listener.asSequence()
84- .map { it as NmsServerboundPacketListener <Packet > }
85- .map { it.handleServerboundPacket(packet, player) }
86- .any { it == PacketListenerResult .CANCEL }
84+ var cancel = false
85+ for (listener in listener) {
86+ listener as NmsServerboundPacketListener <Packet >
87+ val result = listener.handleServerboundPacket(packet, player)
88+ if (result == PacketListenerResult .CANCEL ) {
89+ cancel = true
90+ }
91+ }
8792
8893 return if (cancel) null else packet
8994 }
@@ -97,10 +102,14 @@ class SurfBukkitNmsBridgeImpl : SurfBukkitNmsBridge {
97102
98103 if (listeners.isEmpty()) return packet
99104
100- val cancel = listeners.asSequence()
101- .map { it as NmsClientboundPacketListener <Packet > }
102- .map { it.handleClientboundPacket(packet, player) }
103- .any { it == PacketListenerResult .CANCEL }
105+ var cancel = false
106+ for (listener in listeners) {
107+ listener as NmsClientboundPacketListener <Packet >
108+ val result = listener.handleClientboundPacket(packet, player)
109+ if (result == PacketListenerResult .CANCEL ) {
110+ cancel = true
111+ }
112+ }
104113
105114 return if (cancel) null else packet
106115 }
0 commit comments