diff --git a/gradle.properties b/gradle.properties index d8640a09..bf78a88b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled javaVersion=25 mcVersion=26.2 group=dev.slne.surf.api -version=3.27.1 +version=3.27.2 relocationPrefix=dev.slne.surf.api.libs snapshot=false diff --git a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt index f707b5cd..b453a647 100644 --- a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt +++ b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v1-21-11/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v1_21_11/bridges/V1_21_11SurfPaperNmsPlayerBridgeImpl.kt @@ -54,13 +54,18 @@ import kotlin.jvm.optionals.getOrNull @NmsUseWithCaution class V1_21_11SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { + @Suppress("USELESS_ELVIS") override fun removeAllTrackedEntities(player: Player, swallowExceptions: Boolean) { val nmsPlayer = player.toNms() + val connection = nmsPlayer.connection ?: return + val level = nmsPlayer.level() - val distance = player.viewDistance.toDouble() - player.getNearbyEntities(distance, distance, distance).forEach { entity -> + val trackers = level.chunkSource.chunkMap.entityMap.values.toTypedArray() + for (tracker in trackers) { try { - entity.toNms().`moonrise$getTrackedEntity`().serverEntity.removePairing(nmsPlayer) + if (tracker.seenBy.contains(connection)) { + tracker.serverEntity.removePairing(nmsPlayer) + } } catch (e: Throwable) { if (!swallowExceptions) { throw e diff --git a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt index 27e446fc..07a80832 100644 --- a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt +++ b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-1/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_1/bridges/V26_1SurfPaperNmsPlayerBridgeImpl.kt @@ -54,13 +54,18 @@ import kotlin.jvm.optionals.getOrNull @Suppress("ClassName") class V26_1SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { + @Suppress("USELESS_ELVIS") override fun removeAllTrackedEntities(player: Player, swallowExceptions: Boolean) { val nmsPlayer = player.toNms() + val connection = nmsPlayer.connection ?: return + val level = nmsPlayer.level() - val distance = player.viewDistance.toDouble() - player.getNearbyEntities(distance, distance, distance).forEach { entity -> + val trackers = level.chunkSource.chunkMap.entityMap.values.toTypedArray() + for (tracker in trackers) { try { - entity.toNms().`moonrise$getTrackedEntity`().serverEntity.removePairing(nmsPlayer) + if (tracker.seenBy.contains(connection)) { + tracker.serverEntity.removePairing(nmsPlayer) + } } catch (e: Throwable) { if (!swallowExceptions) { throw e diff --git a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt index bb3e9944..3f6d94e5 100644 --- a/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt +++ b/surf-api-paper/surf-api-paper-nms/surf-api-paper-nms-v26-2/src/main/kotlin/dev/slne/surf/api/paper/server/nms/v26_2/bridges/V26_2SurfPaperNmsPlayerBridgeImpl.kt @@ -54,13 +54,18 @@ import kotlin.jvm.optionals.getOrNull @Suppress("ClassName") class V26_2SurfPaperNmsPlayerBridgeImpl : SurfPaperNmsPlayerBridge { + @Suppress("USELESS_ELVIS") override fun removeAllTrackedEntities(player: Player, swallowExceptions: Boolean) { val nmsPlayer = player.toNms() + val connection = nmsPlayer.connection ?: return + val level = nmsPlayer.level() - val distance = player.viewDistance.toDouble() - player.getNearbyEntities(distance, distance, distance).forEach { entity -> + val trackers = level.chunkSource.chunkMap.entityMap.values.toTypedArray() + for (tracker in trackers) { try { - entity.toNms().`moonrise$getTrackedEntity`().serverEntity.removePairing(nmsPlayer) + if (tracker.seenBy.contains(connection)) { + tracker.serverEntity.removePairing(nmsPlayer) + } } catch (e: Throwable) { if (!swallowExceptions) { throw e