diff --git a/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt b/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt index 234a06c98..01499c1fa 100644 --- a/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt +++ b/Server/src/main/kotlin/rs09/game/content/ame/RandomEventNPC.kt @@ -37,7 +37,7 @@ abstract class RandomEventNPC(id: Int) : NPC(id) { open fun terminate() { finalized = true pulseManager.clear("amemovement") - RandomEventManager.getInstance(player)!!.event = null + RandomEventManager.getInstance(player)?.event = null if (initialized) { poofClear(this) } diff --git a/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt b/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt index aa2be3b2f..ef90be87a 100644 --- a/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt +++ b/Server/src/main/kotlin/rs09/net/packet/PacketWriteQueue.kt @@ -16,7 +16,7 @@ class PacketWriteQueue : TickListener { companion object { private val queueLock = ReentrantLock() - private val packetsToQueue = ArrayList?>(1000) + private val packetsToQueue = LinkedList?>() private val packetsToWrite = LinkedList?>() @JvmStatic @@ -34,7 +34,7 @@ class PacketWriteQueue : TickListener { @JvmStatic fun push(packet: OutgoingPacket, context: T) { - if (queueLock.isLocked) + if (queueLock.isHeldByCurrentThread) packetsToQueue.add(QueuedPacket(packet, context)) else packetsToWrite.add(QueuedPacket(packet, context)) @@ -58,8 +58,9 @@ class PacketWriteQueue : TickListener { SystemLogger.logWarn("Packet queue was NOT empty! Remaining packets: ${packetsToWrite.size}") try { for (pkt: QueuedPacket<*>? in packetsToWrite) SystemLogger.logWarn("${pkt?.out?.javaClass?.simpleName ?: "NULL"} <- ${pkt?.context ?: "NULL"}") - } catch (e: Exception) - { + } catch (ignored: NullPointerException) { + //do nothing, we don't care, this can happen when everything is working as intended. + } catch (e: Exception) { e.printStackTrace() } finally { packetsToWrite.clear() @@ -68,10 +69,8 @@ class PacketWriteQueue : TickListener { queueLock.unlock() - val queueIter = packetsToQueue.iterator() - while (queueIter.hasNext()) { - packetsToWrite.add(queueIter.next()) - queueIter.remove() + while (packetsToQueue.isNotEmpty()) { + packetsToWrite.add(packetsToQueue.pop()) } }