network: handle tab list data (1.7)

This commit is contained in:
Bixilon 2023-10-02 00:18:03 +02:00
parent 2126c34012
commit e3be42f686
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -12,6 +12,8 @@
*/
package de.bixilon.minosoft.protocol.packets.s2c.play.tab
import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional
import de.bixilon.minosoft.protocol.ProtocolUtil.encodeNetwork
import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection
import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket
import de.bixilon.minosoft.protocol.protocol.ProtocolVersions
@ -19,6 +21,7 @@ import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer
import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels
import de.bixilon.minosoft.util.logging.LogMessageType
import java.util.*
class LegacyTabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
val items: MutableMap<String, Int?> = mutableMapOf()
@ -38,7 +41,24 @@ class LegacyTabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket {
}
override fun handle(connection: PlayConnection) {
TODO("Can not handle tab packet!")
for ((name, ping) in items) {
val uuid = UUID.nameUUIDFromBytes(name.encodeNetwork()) // TODO: map with players (if possible)
if (ping == null) {
connection.tabList.remove(uuid)
continue
}
var item = connection.tabList.uuid[uuid]
if (item == null) {
item = PlayerAdditional(name)
connection.tabList.uuid[uuid] = item
connection.tabList.name[name] = item
}
item.ping = ping
}
}
override fun log(reducedLog: Boolean) {