Skip to content

Commit cd9dd27

Browse files
refactor: remove unused TabEntryRemoveRedisEvent, clean up tablist service and listener logic, and improve Redis event handling
1 parent 62f6d58 commit cd9dd27

File tree

4 files changed

+21
-28
lines changed

4 files changed

+21
-28
lines changed

surf-tab-velocity/src/main/kotlin/dev/slne/surf/tab/velocity/config/TablistConfig.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@ import org.spongepowered.configurate.objectmapping.ConfigSerializable
55
@ConfigSerializable
66
data class TablistConfig(
77
val header: String = "<br><#6EA6D9> CASTCRAFTER <br><#6EA6D9>COMMUNITY SERVER<br><br><#59CCF2><date><gray> - <#59CCF2><time> <gray><> <#59CCF2><players_online><gray> / <#59CCF2><players_max><br><br>",
8-
val footer: String = "<br><#59CCF2>Du befindest dich auf <#f9c353><server><br><#6EA6D9>ᴄᴀѕᴛᴄʀᴀꜰᴛᴇʀ.ᴅᴇ<br>",
9-
val nameFormat: String = "<luckperms_prefix><player_name><luckperms_suffix>",
8+
val footer: String = "<br><#59CCF2>Du befindest dich auf <#f9c353><server><br><#6EA6D9>ᴄᴀѕᴛᴄʀᴀꜰᴛᴇʀ.ᴅᴇ<br>"
109
)

surf-tab-velocity/src/main/kotlin/dev/slne/surf/tab/velocity/listener/ConnectionListener.kt

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,13 @@ import com.velocitypowered.api.event.player.ServerPostConnectEvent
88
import com.velocitypowered.api.proxy.Player
99
import dev.slne.surf.tab.velocity.plugin
1010
import dev.slne.surf.tab.velocity.redis.event.TabEntryAddRedisEvent
11-
import dev.slne.surf.tab.velocity.redis.event.TabEntryRemoveRedisEvent
1211
import dev.slne.surf.tab.velocity.redisApi
1312
import dev.slne.surf.tab.velocity.service.tablistService
1413
import java.util.concurrent.TimeUnit
1514

1615
class ConnectionListener {
1716
@Subscribe
1817
fun onPostConnect(event: ServerPostConnectEvent) {
19-
event.previousServer?.let {
20-
redisApi.publishEvent(TabEntryRemoveRedisEvent(event.player.uniqueId))
21-
}
22-
2318
plugin.proxy.scheduler.buildTask(plugin, Runnable {
2419
handleJoin(event.player)
2520
}).delay(750, TimeUnit.MILLISECONDS).schedule()
@@ -43,21 +38,11 @@ class ConnectionListener {
4338
fun onDisconnect(event: DisconnectEvent) {
4439
val player = event.player
4540

46-
redisApi.publishEvent(
47-
TabEntryRemoveRedisEvent(
48-
player.uniqueId
49-
)
50-
)
41+
5142
}
5243

5344
@Subscribe
5445
fun onKick(event: KickedFromServerEvent) {
5546
val player = event.player
56-
57-
redisApi.publishEvent(
58-
TabEntryRemoveRedisEvent(
59-
player.uniqueId
60-
)
61-
)
6247
}
6348
}

surf-tab-velocity/src/main/kotlin/dev/slne/surf/tab/velocity/redis/TabRedisEventListener.kt

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,46 @@
11
package dev.slne.surf.tab.velocity.redis
22

33
import com.github.shynixn.mccoroutine.velocity.launch
4+
import com.velocitypowered.api.proxy.player.TabListEntry
45
import dev.slne.surf.redis.event.OnRedisEvent
6+
import dev.slne.surf.surfapi.core.api.util.mutableObject2ObjectMapOf
57
import dev.slne.surf.tab.api.redis.TabHideRedisEvent
68
import dev.slne.surf.tab.api.redis.TabShowRedisEvent
79
import dev.slne.surf.tab.velocity.plugin
810
import dev.slne.surf.tab.velocity.redis.event.TabEntryAddRedisEvent
911
import dev.slne.surf.tab.velocity.redis.event.TabEntryRemoveRedisEvent
1012
import dev.slne.surf.tab.velocity.redis.event.TabEntryUpdateRedisEvent
1113
import dev.slne.surf.tab.velocity.service.tablistService
12-
import dev.slne.surf.tab.velocity.util.toVelocity
14+
import java.util.*
1315
import kotlin.jvm.optionals.getOrNull
1416

1517
object TabRedisEventListener {
18+
private val hiddenEntries = mutableObject2ObjectMapOf<UUID, List<TabListEntry>>()
19+
1620
@OnRedisEvent
1721
fun onTabHide(event: TabHideRedisEvent) {
1822
val player = plugin.proxy.getPlayer(event.player).getOrNull() ?: return
23+
24+
if (!player.tabList.containsEntry(event.toHide)) {
25+
return
26+
}
27+
28+
val entry = player.tabList.getEntry(event.toHide).getOrNull() ?: return
29+
hiddenEntries[event.player] = (hiddenEntries[event.player] ?: mutableListOf()) + entry
30+
1931
player.tabList.removeEntry(event.toHide)
2032
}
2133

2234
@OnRedisEvent
2335
fun onTabShow(event: TabShowRedisEvent) {
2436
val player = plugin.proxy.getPlayer(event.player).getOrNull() ?: return
25-
val server = player.currentServer.getOrNull()?.server ?: return
26-
val entry =
27-
tablistService.entries[server]?.find { it.profile.uuid == event.toShow } ?: return
37+
val entry = hiddenEntries[event.player]?.find { it.profile.id == event.toShow } ?: return
38+
39+
hiddenEntries[event.player] =
40+
hiddenEntries[event.player]?.filterNot { it.profile.id == event.toShow }
41+
?: mutableListOf()
2842

29-
player.tabList.addEntry(entry.toVelocity(player.tabList))// TODO: Not working with multiproxy support
43+
player.tabList.addEntry(entry)
3044
}
3145

3246
@OnRedisEvent

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package dev.slne.surf.tab.velocity.service
22

33
import com.velocitypowered.api.proxy.Player
4-
import com.velocitypowered.api.proxy.server.RegisteredServer
54
import dev.slne.clan.api.surfClanApi
6-
import dev.slne.surf.surfapi.core.api.util.mutableObject2ObjectMapOf
7-
import dev.slne.surf.tab.api.entry.TabEntry
85
import dev.slne.surf.tab.velocity.hook.LuckPermsHook
96
import dev.slne.surf.tab.velocity.plugin
107
import dev.slne.surf.tab.velocity.tablistConfig
@@ -16,8 +13,6 @@ import kotlin.jvm.optionals.getOrNull
1613
val tablistService = VelocityTablistService()
1714

1815
class VelocityTablistService {
19-
val entries = mutableObject2ObjectMapOf<RegisteredServer, List<TabEntry>>()
20-
2116
fun sendAdditions(player: Player) {
2217
player.sendPlayerListHeaderAndFooter(
2318
tablistConfig.header.formatWithAdventure(player),

0 commit comments

Comments
 (0)