Skip to content
This repository was archived by the owner on Dec 10, 2025. It is now read-only.

Commit 31a3797

Browse files
committed
refactor: replace boolean property with AtomicBoolean for thread-safe AFK status management
1 parent 2fe115a commit 31a3797

File tree

4 files changed

+7
-7
lines changed

4 files changed

+7
-7
lines changed

surf-cloud-bukkit/src/main/kotlin/dev/slne/surf/cloud/bukkit/util/ObservableFieldByEvent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package dev.slne.surf.cloud.bukkit.util
22

3-
import dev.slne.surf.cloud.api.common.util.mutableObjectSetOf
43
import dev.slne.surf.cloud.api.common.util.observer.ObservableField.ObservableCoroutineScope
54
import dev.slne.surf.surfapi.bukkit.api.event.listen
65
import kotlinx.coroutines.CoroutineDispatcher
@@ -11,6 +10,7 @@ import kotlinx.coroutines.launch
1110
import org.bukkit.event.Event
1211
import org.bukkit.plugin.Plugin
1312
import org.bukkit.plugin.java.JavaPlugin
13+
import java.util.concurrent.CopyOnWriteArrayList
1414
import kotlin.reflect.KClass
1515

1616
class ObservableFieldByEvent<E : Event, T>(
@@ -23,7 +23,7 @@ class ObservableFieldByEvent<E : Event, T>(
2323
customDispatcher: CoroutineDispatcher? = null
2424
) {
2525
private val channel = Channel<T>(Channel.CONFLATED)
26-
private val listener = mutableObjectSetOf<(T) -> Unit>()
26+
private val listener = CopyOnWriteArrayList<(T) -> Unit>()
2727

2828
init {
2929
val dispatcher = customDispatcher?.let { CoroutineScope(it + SupervisorJob()) }

surf-cloud-core/surf-cloud-core-client/src/main/kotlin/dev/slne/surf/cloud/core/client/netty/ConnectionVerifier.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class ConnectionVerifier : CloudLifecycleAware {
1919
CloudConnectionVerificationScope.launch {
2020
while (isActive) {
2121
delay(5.minutes)
22-
2322
}
2423
}
2524
}

surf-cloud-core/surf-cloud-core-client/src/main/kotlin/dev/slne/surf/cloud/core/client/player/ClientCloudPlayerImpl.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import dev.slne.surf.cloud.api.common.player.teleport.TeleportCause
1414
import dev.slne.surf.cloud.api.common.player.teleport.TeleportFlag
1515
import dev.slne.surf.cloud.api.common.player.teleport.TeleportLocation
1616
import dev.slne.surf.cloud.api.common.server.CloudServer
17+
import dev.slne.surf.cloud.api.common.util.getValue
18+
import dev.slne.surf.cloud.api.common.util.setValue
1719
import dev.slne.surf.cloud.core.client.server.serverManagerImpl
1820
import dev.slne.surf.cloud.core.client.util.luckperms
1921
import dev.slne.surf.cloud.core.common.netty.network.protocol.running.*
@@ -42,6 +44,7 @@ import net.luckperms.api.platform.PlayerAdapter
4244
import java.net.Inet4Address
4345
import java.time.ZonedDateTime
4446
import java.util.*
47+
import java.util.concurrent.atomic.AtomicBoolean
4548
import kotlin.time.Duration
4649
import kotlin.time.Duration.Companion.days
4750
import dev.slne.surf.cloud.core.common.netty.network.protocol.running.ServerboundRequestPlayerDataResponse.NameHistory as NameHistoryResponse
@@ -54,8 +57,7 @@ abstract class ClientCloudPlayerImpl<PlatformPlayer : Audience>(uuid: UUID, name
5457
@Volatile
5558
var serverUid: Long? = null
5659

57-
@Volatile
58-
var afk: Boolean = false
60+
var afk: Boolean by AtomicBoolean()
5961

6062
override val connectedToProxy get() = proxyServerUid != null
6163

surf-cloud-core/surf-cloud-core-client/src/main/kotlin/dev/slne/surf/cloud/core/client/player/CommonClientCloudPlayerManagerImpl.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package dev.slne.surf.cloud.core.client.player
22

3-
import dev.slne.surf.cloud.api.common.player.OfflineCloudPlayer
43
import dev.slne.surf.cloud.core.common.player.CloudPlayerManagerImpl
54
import dev.slne.surf.cloud.core.common.player.CommonOfflineCloudPlayerImpl
65
import dev.slne.surf.cloud.core.common.player.playerManagerImpl
76
import net.kyori.adventure.audience.Audience
87
import java.util.*
98

10-
abstract class CommonClientCloudPlayerManagerImpl<Platform: Audience, P : ClientCloudPlayerImpl<Platform>> :
9+
abstract class CommonClientCloudPlayerManagerImpl<Platform : Audience, P : ClientCloudPlayerImpl<Platform>> :
1110
CloudPlayerManagerImpl<P>() {
1211
override suspend fun updateProxyServer(
1312
player: P,

0 commit comments

Comments
 (0)