From a54382b74e208e2b288b352c6da5d3ece78fcb48 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 4 Apr 2025 21:41:57 +0700 Subject: [PATCH] Use LinkedHashMap in DynamicSynchableGroup so iteration order is preserved --- .../mc/otm/network/syncher/DynamicSynchableGroup.kt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/DynamicSynchableGroup.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/DynamicSynchableGroup.kt index c6018b77c..bfe1c759e 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/DynamicSynchableGroup.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/syncher/DynamicSynchableGroup.kt @@ -190,7 +190,7 @@ class DynamicSynchableGroup( private data class Slot(val value: T, val id: Int) private val remoteStates = ArrayList() - private val value2slot = HashMap>() + private val value2slot = LinkedHashMap>() private val id2slot = Int2ObjectOpenHashMap>() private val idAllocator = IDAllocator() @@ -323,11 +323,7 @@ class DynamicSynchableGroup( } override fun remove(element: T): Boolean { - if (element !in value2slot) { - return false - } - - val slot = value2slot.remove(element)!! + val slot = value2slot.remove(element) ?: return false checkNotNull(id2slot.remove(slot.id)) remoteStates.forEach { it.remove(slot) } idAllocator.release(slot.id)