Skip to content

Commit f808c82

Browse files
refactor: split updatePlayerInTablist into updateOthersFor and updateForOthers, adjust usages across services, and clean up tablist handling logic
1 parent a36b951 commit f808c82

File tree

3 files changed

+27
-17
lines changed

3 files changed

+27
-17
lines changed

surf-tab-velocity/src/main/kotlin/dev/slne/surf/tab/velocity/command/SurfTabCommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ fun surfTabCommand() = commandTree("surftab") {
1616
tablistConfiguration.reload()
1717

1818
plugin.proxy.allPlayers.forEach {
19-
tablistService.updatePlayerInTablist(it)
19+
tablistService.updateOthersFor(it)
2020
}
2121

2222
executor.sendText {

surf-tab-velocity/src/main/kotlin/dev/slne/surf/tab/velocity/hook/LuckPermsHook.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ object LuckPermsHook {
3232

3333
private fun updatePlayerInTablist(user: User) {
3434
val player = plugin.proxy.getPlayer(user.uniqueId).getOrNull() ?: return
35-
tablistService.updatePlayerInTablist(player)
35+
tablistService.updateForOthers(player)
3636
}
37-
38-
3937
}

surf-tab-velocity/src/main/kotlin/dev/slne/surf/tab/velocity/service/TablistService.kt

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,32 @@ class VelocityTablistService {
5858
weight = LuckPermsHook.getWeight(target.uniqueId)
5959
)
6060

61-
fun updatePlayerInTablist(player: Player) {
62-
// val server = player.currentServer.getOrNull()?.server ?: return
63-
//
64-
// val seenServers = tablistService.getSeenServers(server)
65-
// val viewers = seenServers.flatMap { it.playersConnected }.distinct()
66-
//
67-
// viewers.forEach { viewer ->
68-
// tablistService.removePlayer(viewer, player.uniqueId)
69-
// tablistService.addPlayer(viewer, tablistService.createEntry(player, viewer))
70-
// }
71-
//
72-
// tablistService.removePlayer(player, player.uniqueId)
73-
// tablistService.addPlayer(player, tablistService.createEntry(player, player))
61+
fun updateOthersFor(viewer: Player) {
62+
val server = viewer.currentServer.getOrNull()?.server ?: return
63+
64+
val seenServers = tablistService.getSeenServers(server)
65+
val seenPlayers = seenServers.flatMap { it.playersConnected }.distinct()
66+
.filterNot { it.uniqueId == viewer.uniqueId }
67+
68+
seenPlayers.forEach { seen ->
69+
tablistService.removePlayer(viewer, seen.uniqueId)
70+
tablistService.addPlayer(viewer, tablistService.createEntry(seen))
71+
}
72+
7473
// As velocity has no chat session api, we cannot update the tablist entries properly yet. Currently, it will cause the chat validation to fail.
7574
// [00:21:47] [Render thread/ERROR]: Received chat message from 1c779cb1-3860-4e23-9cac-7f160b2acc61, but they have no chat session initialized and secure chat is enforced
7675
}
76+
77+
fun updateForOthers(toUpdate: Player) {
78+
val server = toUpdate.currentServer.getOrNull()?.server ?: return
79+
80+
val seenServers = tablistService.getSeenServers(server)
81+
val seenPlayers = seenServers.flatMap { it.playersConnected }.distinct()
82+
.filterNot { it.uniqueId == toUpdate.uniqueId }
83+
84+
seenPlayers.forEach { viewer ->
85+
tablistService.removePlayer(viewer, toUpdate.uniqueId)
86+
tablistService.addPlayer(viewer, tablistService.createEntry(toUpdate))
87+
}
88+
}
7789
}

0 commit comments

Comments
 (0)